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]

  

查看执行

 

posted @ 2021-06-04 11:22  莫使娇躯空对月  阅读(131)  评论(0编辑  收藏  举报