httprunner2.x--HttpRunner的hook(钩子)机制:(setup/teardown)用例步骤层面的调用
在 HttpRunner 中,hook 机制可以同时在“测试用例层面”和“测试步骤层面”使用,下面看一看同时使用这两个层面钩子的情况。
案例二: 用例层面 和 步骤层面 hook 的使用
在 debugtalk.py 文件中定义的 hook 函数:
def print_msg2(type, msg): """ hooks函数 :param type: 用例、步骤 :param msg: 开始、结束 :return: """ print("执行%s:%s" % (type, msg))
引入钩子 hook 的测试用例文件:
- 在用例中使用 hook
- 在每个步骤中使用 hook
baidu.yml
name: 请求百度 request: url: https://www.baidu.com/ method: GET headers: User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36 validate: - eq: [status_code, 200]
baidu_new.yml
name: 请求百度 request: url: http://news.baidu.com/ method: GET headers: User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36 validate: - eq: [status_code, 200]
测试用例
config: name: hooks用例层 # 执行用例前 setup_hooks: # 调用hooks函数 - ${print_msg2(用例,testcase开始)} # 执行用例后 teardown_hooks: # 调用hooks函数 - ${print_msg2(用例,testcase结束)} teststeps: - name: 测试步骤1 - 打开百度页面 # 执行步骤前 setup_hooks: # 调用hooks函数 - ${print_msg2(步骤1,testsetp1开始)} # 执行步骤后 teardown_hooks: # 调用hooks函数 - ${print_msg2(步骤1,testsetp1结束)} api: api/baidu.yml validate: - eq: ["status_code", 200] - name: 测试步骤2 - 打开新闻页面 # 执行步骤前 setup_hooks: # 调用hooks函数 - ${print_msg2(步骤2,testsetp2开始)} # 执行步骤后 teardown_hooks: # 调用hooks函数 - ${print_msg2(步骤2,testsetp2结束)} api: api/baidu_new.yml validate: - eq: ["status_code", 200]
查看执行