因为httprunner内置的校验器无法满足所有业务需求,自定义校验器使用hook机制实现。将需要的校验函数放置到的debugtalk.py文件中。
函数只能传入两个参数,一个是实际结果,一个是预期结果。
调用方法是在用例的校验器里直接引用函数名称。
validate:
- {"check": 实际结果,"comparator":"函数名称","expect": 预期结果}
一些写过的校验器函数:
def time_weekday_eq(reponse_time, interval_weekday):
'''
效验传入时间是否是固定在一个星期的某一天
:paramreponse_time: 接口里需要校验的时间
:paraminterval_weekday: 期望的时间,1到7的整数,代表星期一到星期日
: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