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



作者:gz_tester
链接:https://www.jianshu.com/p/d154221c99eb
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值