一、用例提取公共变量
在 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"]
四、 上下级参数关联场景