HttpRunner学习5--使用variables声明变量

2019-11-14  本文已影响0人  wintests

前言

在HttpRunner中,如果需要声明变量,可以通过关键字 variables 来完成,要引用声明的变量,则是通过 $+变量名 (如 $token )来实现。variables 可以在 configtest 中使用。

本人环境:HttpRunner V1.5.8

测试场景

登录接口文档说明:http://doc.nnzhp.cn/index.php?s=/6&page_id=12

我们将继续以之前的登录接口来学习,之前的用例是这样的:

- config:
    name: extract test
    request:
      base_url: http://api.nnzhp.cn

- test:
    name: login case
    request:
      url: /api/user/login
      method: POST
      headers:
        Content-Type: application/x-www-form-urlencoded
        User-Agent: Fiddler
      data:
        username: test1010
        passwd: aA123456
    validate:
      - eq: [status_code, 200]
      - eq: [content.error_code, 0]

在上面的用例中,我们的 usernamepasswd 是在 data 中写死的,但在实际测试中,我们的数据可能会经常变化,因此,我们最好把一个变量传入到 usernamepasswd 中,这样可以便于对用例进行维护。

config中使用variables

在 config 中声明变量,相当于定义的全局变量,作用域为整个用例,可以在各个 test 中使用。

- config:
    name: variables test
    request:
      base_url: http://api.nnzhp.cn
    variables:
      username: test1010
      passwd: aA123456

我们先在 config 中声明了变量 usernamepasswd,变量名可随意定义,然后在 test 中进行引用。

注意:引用的时候, $ 后的变量名,必须与声明的变量名一致。

      data:
        username: $username
        passwd: $passwd

在 config 中定义的变量,可以在当前整个YAML脚本中生效,比如可以在多个 test 使用:

- test:
      省略部分内容
      data:
        username: $username
        passwd: $passwd

- test:
      省略部分内容
      data:
        username: $username
        passwd: $passwd

test中使用variables

在 test 中声明变量,相当于定义的局部变量,作用域为当前测试步骤,即只作用于一个 test 。test 中声明和引用变量的方法,和在 config 中是一样的,如下:

- test:
    name: login case
    variables:
      username: test1010
      passwd: aA123456
    request:
      省略部分内容
      data:
        username: $username
        passwd: $passwd

很明显,在 config 和 test 中使用 variables 是有区别的,如果只在 test 中定义变量,那么存在多个 test 时,我们需要这样写:

- test:
    name: login case
    variables:
      username: test1010
      passwd: aA123456
    request:
      省略部分内容
      data:
        username: $username
        passwd: $passwd

- test:
    name: login case
    variables:
      username: test1010
      passwd: aA123456
    request:
      省略部分内容
      data:
        username: $username
        passwd: $passwd

config和test中同时使用variables

有时候,我们可能想同时定义全局变量和局部变量,那么可以同时在 config 和 test 中使用 variables 。如果 config 和 test 中定义了相同的变量名,那么在 test 执行时会优先使用当前 test 测试步骤中定义的局部变量。

完整的YAML格式用例如下:

- config:
    name: variables test
    request:
      base_url: http://api.nnzhp.cn
    variables:
      username: test101011111
      passwd: aA123456

- test:
    name: login case
    variables:
      username: test1010
      passwd: aA123456
    request:
      url: /api/user/login
      method: POST
      headers:
        Content-Type: application/x-www-form-urlencoded
        User-Agent: Fiddler
      data:
        username: $username
        passwd: $passwd
    validate:
      - eq: [status_code, 200]
      - eq: [content.error_code, 0]

上面这个用例中,config 中的用户名密码是错误的,test 中的用户名密码是正确的。该用例在执行时,使用的时 test 中定义的局部变量,因此它是能够登录成功。

运行用例 查看报告
上一篇下一篇

猜你喜欢

热点阅读