前面有一篇隨筆大致描述了如何在jmeter中生成時間戳,所以這次繼續介紹下在用python做接口測試時,如何構造想要的時間戳參數
1. 目的&思路
本次要構造的時間戳,主要有2個用途:
- headers中需要傳當前時間對應的13位(毫秒級)時間戳
- 查詢獲取某一時間段內的數據(如30天前~當前時間)
接下來要做的工作:
- 獲取當前日期,如2020-05-08,定為結束時間
- 設置時間偏移量,獲取30天前對應的日期,定為開始時間
- 將開始時間與結束時間轉換為時間戳
python中生成時間戳的話,可以使用time模塊直接獲取當前日期的時間戳,但是因為需要進行時間偏移,所以我這次並未使用time模塊,而是先用 datetime 模塊獲取當前日期;然后用 datetime 的 timedelta 來獲取n天前的日期;最后再使用 timestamp() 方法將日期轉換為時間戳
2. 一個簡單易懂的例子
按照上面的思路,時間戳參數創建過程如下
today = datetime.datetime.now() # 獲取今天時間 print("當前日期是:{}".format(today)) end_time = int(round(today.timestamp()*1000)) # 取今天時間為查詢結束時間,並轉為13位時間戳(int()表示保留整數部分) offset = datetime.timedelta(days=-30) # 定義偏移量,即與當前時間的時間間隔 start_time = int(round((today + offset).timestamp()*1000)) # 定義查詢開始時間=當前時間回退30天,轉為時間戳 print("開始日期為:{},對應的時間戳:{}".format(today + offset, start_time)) print("結束日期為:{},對應的時間戳:{}".format(today, end_time))
打印一下結果
當前日期是:2020-05-08 21:03:12.976922 開始日期為:2020-04-08 21:03:12.976922,對應的時間戳:1586350992977 結束日期為:2020-05-08 21:03:12.976922,對應的時間戳:1588942992977
找一個時間戳轉換網站,看看上述生成的開始日期的時間戳是否與原本日期對應
可以看出來,大致是能對應上的(網上很多人使用round()方法進行了四舍五入,因為我對精度沒那么高要求,所以直接取整了)
需要注意的是:timestamp() 方法默認生成的是10位(秒級)時間戳,如果要轉換為13位(毫秒級)的話,把結果*1000才行
補充timedelta的幾個參數
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)