前言
在 HttpRunner 中,支持变量声明(variables)和引用($var 或 ${var} )的机制。
在 config 和 step 中均可以通过 variables 关键字定义变量,然后在测试步骤中可以通过 $变量名称 的方式引用变量。
区别在于
- 在 config 中定义的变量为全局的,整个测试用例(testcase)的所有地方均可以引用;
- 在 step 中定义的变量作用域仅局限于当前测试步骤(teststep)
config 全局变量
在config下声明变量(variables)是全局变量,这样就在整个.yml文件生效了
config:
name: logincase
variables:
user: test
psw: "123456"
通过 ${} 或 $ 的形式来引用变量, 例如:$var 或 ${var}
config:
name: 引用变量
variables:
username: test123
teststeps:
-
name: post
request:
method: POST
url: http://httpbin.org/post
json:
username: ${username}
password: "123456"
validate:
- eq: [status_code, 200]
teststep 中局部变量
如下用例有2个步骤,其中第二个步骤post请求设置了局部变量, 那么它的作用范围只在第二个步骤中生效。
config:
name: 引用变量
teststeps:
-
name: get
request:
method: GET
url: http://httpbin.org/get
validate:
- eq: [status_code, 200]
-
name: post
variables:
username: test123
request:
method: POST
url: http://httpbin.org/post
json:
username: ${username}
password: "123456"
validate:
- eq: [status_code, 200]
变量优先级
原则上 config 变量和 step 变量名称尽量不要重复, 当config和step中都用同一个变量时,step变量优先级大于config变量
config:
name: 引用变量
variables:
username: test123
teststeps:
-
name: get
request:
method: GET
url: http://httpbin.org/get
validate:
- eq: [status_code, 200]
-
name: post
variables:
username: test456
request:
method: POST
url: http://httpbin.org/post
json:
username: ${username}
password: "123456"
validate:
- eq: [status_code, 200]
${username}
引用的结果是局部变量中的值 test456