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


    前言

    在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 中定义的局部变量,因此它是能够登录成功。

    运行用例

    查看报告

  • 相关阅读:
    如何获取antlr解析的错误消息?(完美)
    2021最新版保姆级Journal Citation Reports使用
    【 Linux系统 】Centos下Linux启动时默认内核设置机制
    留言板
    友链
    java enum简记
    java enum多路分发下浅识表驱动式编程
    c语言建立和调用dll
    scanf
    js学习1 —— 类型,值,变量
  • 原文地址:https://www.cnblogs.com/wintest/p/11862618.html
Copyright © 2020-2023  润新知