httprunnerManager- Hook机制

一、Hook引入背景
若接口在测试前后需要进行特殊处理,如执行前的初始化操作、执行完成后的等待操作。类似于 unittest 中的 setUp() 和 tearDown() 方法,HttpRunner中的Hook功能也支持此类操作。
setup_hooks:在HTTP请求发送前执行hook函数,主要用于准备工作;也可实现对请求的request内容进行预处理
teardown_hooks:在HTTP请求发送后执行hook函数,主要用于测试后的清理工作;也可实现对响应的response 进行修改,例如进行加解密等处理
 
二、实践案例
案例描述:设置接口请求之后如果响应状态码为200,就等待100ms;否则就按照自定义设定的时间进行等待
 
测试接口:http://httpbin.org/get
请求类型:GET
1.编辑debugtalk.py代码,创建辅助函数sleep()
debugtalk.py
import hashlib
import time

# 定义获取sign的方法,传递用户名和密码参数
def getSign(user,passwd):
    str = user+passwd   # 拼接用户名+密码的字符串
    md5 = hashlib.md5() # 调用hashlib模块的md5()方法
    md5.update(str.encode(encoding='utf-8'))  # 对str进行utf-8格式编码,然后用md5加密
    sign = md5.hexdigest()  # md5加密,并以16进制的字符串进行存储到sign变量
    return sign
# 根据给定的 [用户名+密码] 生成md5加密的摘要信息,并返回sign的结果
print(getSign('admin','123456'))

def sleep(response,t):
    if response.status_code==200:
        time.sleep(0.1)
    else:
        time.sleep(t)   # 根据t值,延迟设定的时间

(PS:getSign() 方法为上文所用到的md5加密函数,本文可暂时不调用该函数)

 
2.创建用例,引用辅助函数
新建用例test_get_request_hook,本次在非200状态码时自定义延迟2s响应时间,则在其中设置引用辅助函数 ${sleep($response,2)}
hooks中引用辅助函数:
操作:variables/parameters --> add hooks --> teardown_hooks:填写引用的辅助函数
对响应状态码(status_code)设置断言:
操作:extract/validate --> add validate --> validate:设置断言所检查的响应字段、逻辑关系、字符类型、预期值
 
执行用例:
200状态,延迟0.1s响应时间
 
构造非200响应状态,如404状态。修改接口地址为:http://httpbin.org/getaaa
404状态,延迟2s响应时间
 
原文地址:https://www.cnblogs.com/summerxye/p/11057812.html