httprunner 4.x学习 - 3.variables 变量声明与引用

发布时间 2023-05-05 13:43:07作者: 上海-悠悠

前言

在 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