03-Httprunner接口自动化第三篇:参数化&debugtalk的使用

一、用例提取公共变量

在 HttpRunner 中,支持变量申明(variables)和引用($var)的机制。在 config 和 teststeps 中均可以通过 variables 关键字定义变量,然后在测试步骤中可以通过 $ + 变量名称 的方式引用变量。区别在于,在 config 中定义的变量为全局的,整个测试用例(testcase)的所有地方均可以引用;在 test 中定义的变量作用域仅局限于当前测试步骤(teststep)。

1.1 config变量

config:
  name: 测试用例-selectInfoyName
  base_url: https://baidu.com/
  variables:
      username: tester1

1.2 teststeps变量

teststeps:

  - name: selectInfoyName
    request:
      method: POST
      url: /test/v1/api/user/selectInfoyName
      json: {}
    variables:
        username: tester2

二、参数化驱动

2.1 在config中直接传输数据

config:
    name: 查询测试接口
    variables:
        username: tester
    base_url: https://baidu.com/
    parameters:
        proveTypeNo: ["1", "2", "3"]


teststeps:

    -   name: 查询测试接口
        request:
            url: /test/v1/api/prove/queryList
            method: POST
            json:
                proveTypeNo: $proveTypeNo
        setup_hooks:
            - ${headers($request, $username)}
        validate:
            -   eq: [status_code, 200]
            -   eq: [json.code, "200"]

2.2 采用csv的形式

config:
    name: 测试接口
    variables:
        username: tester
    base_url: https://baidu.com/
    parameters:
        proveTypeNo-templateType: '${parameterize(./testdata/test/queryTemplatePng.csv)}'

teststeps:

    -   name: 移动端 测试
        request:
            url: /test/v1/api/prove/queryList
            method: POST
            json:
                proveTypeNo: $proveTypeNo
                templateType: $templateType
        setup_hooks:
            - ${headers($request, $username)}
        validate:
            -   eq: [status_code, 200]
            -   eq: [json.code, "200"]

三、debugtalk的使用

HttpRunner 的实现方式为,支持热加载的插件机制(debugtalk.py),可以在 YAML/JSON 中调用 Python 函数。

测试用例文件的同级或其父级目录中创建一个 debugtalk.py 文件,然后在其中定义相关的函数和变量。

然后,我们在 YAML/JSON 测试用例文件中,就可以对定义的函数进行调用,对定义的变量进行引用了。引用变量的方式仍然与前面讲的一样,采用{func($var)}。

可参考代码:


config:
    name: 测试接口
    variables:
        username: tester
    base_url: https://baidu.com
    parameters:
        proveTypeNo-templateType: '${parameterize(./testdata/test/queryTemplatePng.csv)}'

teststeps:

    -   name: 测试接口
        request:
            url: /test/v1/api/prove/testTemplatePng
            method: POST
            json:
                proveTypeNo: $proveTypeNo
                templateType: $templateType
        setup_hooks:
            - ${headers($request, $username)}
        validate:
            -   eq: [status_code, 200]
            -   eq: [json.code, "200"]

四、 上下级参数关联场景


image.png

你可能感兴趣的:(03-Httprunner接口自动化第三篇:参数化&debugtalk的使用)