因為httprunner內置的校驗器無法滿足所有業(yè)務需求矗钟,自定義校驗器使用hook機制實現(xiàn)蹂季。將需要的校驗函數(shù)放置到的debugtalk.py文件中功茴。
函數(shù)只能傳入兩個參數(shù),一個是實際結果吐绵,一個是預期結果。
調用方法是在用例的校驗器里直接引用函數(shù)名稱河绽。
validate:
? - {"check": 實際結果,"comparator":"函數(shù)名稱","expect": 預期結果}
一些寫過的校驗器函數(shù):
def time_weekday_eq(reponse_time, interval_weekday):
'''
效驗傳入時間是否是固定在一個星期的某一天
? ? :paramreponse_time: 接口里需要校驗的時間
? ? :paraminterval_weekday: 期望的時間己单,1到7的整數(shù),代表星期一到星期日
? ? :return: 格式化傳入的時間戳獲取對應的星期與期望的時間比對
'''
? ? ltime = time.localtime(int(reponse_time))
dateymd = time.strftime("%Y-%m-%d", ltime)
time_weekday = datetime.strptime(dateymd, "%Y-%m-%d").weekday() +1
? ? assert int(time_weekday) == interval_weekday
def time_interval_eq(reponse_time, interval):
'''
效驗時間是否是按一段間隔時間刷新
? ? :paramreponse_time: 接口里需要校驗的時間
? ? :paraminterval: 刷新間隔耙饰,單位為天
? ? :return: 傳入的時間戳減去當前的時間戳纹笼,核驗間隔時間小于等于期望的間隔
'''
? ? reponse_interval =int(reponse_time) - time.time()
reponse_interval_day = reponse_interval /86400
? ? assert reponse_interval_day <= interval