form action可以变量么_接口测试:A04_HttpRunner通用_01_设置变量

A04_HttpRunner通用_01_设置变量

在编写用例的时候,如果一项硬编码的数据,反复多次出现,可以将其提取出来设置为变量,然后分别进行调用,提高用例的灵活度。HttpRunner 支持变量申明(variables)和引用($var)的机制。

d0641366ab55d497d9158893eb209aa2.png

如某系统登录页面,其表单代码如下

ce3ddd7ad81eee09c8128f7630345755.png

登录页面及其对应的表单代码

编写 YAML 格式的测试用例如下:

  • 表单提交方式为 POST,没有指定enctype属性,即默认为 application/x-www-form-urlencoded,所以提交的请求实体直接写入 data 关键字下。
  • 系统登录的用户名和密码: admin / admin
- config:    name: 用例 - 测试进销存系统登录- test:    name: 步骤 - 完成登录操作    request:      url: http://localhost/myweb/jxc/index.asp?action=login      method: POST      data:        username: admin        pwd: admin

问题:以上用例中,用户名和密码直接写入请求实体 data 下,类似硬编码,如果以其他用户身份登录系统,或者其他补助也用到该用户名的时候,则每次都要修改用例文件,明显缺乏灵活性,所以我们将用户名和密码提取出来,设置为变量,做到一次修改多次使用。而且后面我们可以将其再存储到环境变量文件(.env)中,可以多个测试用例共用一套变量。

解决:将用户名和密码的输入存入变量中:

  • 存入当前步骤的区间中。该变量的作用域只能在当前步骤以内,相当于局部变量。
  • 存入config全局区域中。该变量的作用域为整个测试用例中,相当于全局变量。

变量的定义和使用:

  • 变量定义放到 variables 关键字下,可以同时定义多个变量
  • 定义变量方法: : , 如, p_username: admin
  • 使用变量方法: $, 即:变量名前加上一个“$”符号。如, $p_username

案例1: 变量定义于测试步骤(test)中

- config:    name: 用例 - 测试进销存系统登录- test:    name: 步骤 - 完成登录操作    # 相当于定义局部变量,只能在当前步骤中被使用    variables:      p_username: admin      p_password: admin    request:      url: http://localhost/myweb/jxc/index.asp?action=login      method: POST      data:        # 引用变量:$        username: $p_username        pwd: $p_password    validate:      # 断言,如果登录成功,登录后页面的HTML中会出现 “topFrame” 字符串        # contains: 包含判断,判断预期结果是否被包含在实际结果中      #   content:实际结果,请求后返回的响应实体内容,即登录后打开的页面 HTML代码      #   topFrame:预期结果,如果返回正确的页面,其 HTML 中会包含此字符串              - contains: [content, topFrame]

案例2:变量定义于 config 中

- config:    name: 用例 - 测试进销存系统登录        # 相当于全局变量,在当前测试用例的所有步骤中都可以被使用    variables:      p_username: admin      p_password: admin- test:    name: 步骤 - 完成登录操作    request:      url: http://localhost/myweb/jxc/index.asp?action=login      method: POST      data:        # 在用例文件的任何位置都可以引用变量:$          username: $p_username        pwd: $p_password    validate:      - contains: [content, topFrame]        

如果 config 区域里面的变量和 test 区域里面的变量有冲突时会怎样呢?

实验1:变量同时定义于 config 和 测试步骤 中

  • config 区域:使用 “正确” 的用户名和密码
  • test 区域:使用 “错误” 的用户名和密码
  • 实验结果: 运行成功,说明 config 区域的变量会替换 test 区域的同名变量
- config:    name: 用例 - 测试进销存系统登录    variables:      # 在 config 区域,变量中使用 “正确” 的用户名和密码      p_username: admin      p_password: admin    - test:    name: 步骤 - 完成登录操作    variables:      # 在步骤区域, 变量中使用 “错误” 的用户名和密码      p_username: admin2      p_password: admin2    request:      url: http://localhost/myweb/jxc/index.asp?action=login      method: POST      data:        username: $p_username        pwd: $p_password            validate:      - contains: [content, topFrame]  

实验2:变量同时定义于 config 和 测试步骤 中

  • config 区域:使用 “错误” 的用户名和密码
  • test 区域:使用 “正确” 的用户名和密码
  • 实验结果: 运行失败,证明: config 区域的变量优先级 > test 区域的同名变量
- config:    name: 用例 - 测试进销存系统登录    variables:      # 在 config 区域,变量中使用 “正确” 的用户名和密码      p_username: admin2      p_password: admin2    - test:    name: 步骤 - 完成登录操作    variables:      # 在步骤区域, 变量中使用 “错误” 的用户名和密码      p_username: admin      p_password: admin    request:      url: http://localhost/myweb/jxc/index.asp?action=login      method: POST      data:        username: $p_username        pwd: $p_password            validate:      - contains: [content, topFrame]  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值