httprunner 3.x--variables变量和声明(变量和值一一对应)

 

在 HttpRunner 中,支持变量声明(variables)和引用($var)的机制。调用函数(${func($var)})

在 config 和 test 中均可以通过 variables 关键字定义变量,然后在测试步骤中可以通过 $ + 变量名称 的方式引用变量。


区别在于:

在 config 中定义的变量为全局的,整个测试用例(testcase)的所有地方均可以引用;

在 test 中定义的变量作用域仅局限于当前测试步骤(teststep)

 

一般写用例的时候,最好把可能会变的参数单独写个变量。做到测试数据和代码的分离,以便后续维护。

如果step和config中variables声明的参数名相同,在运行测试用例的时候会取step里面的参数值

全局变量

如果要设置一个全局变量,需把变量声明(variables)放到config下

pytest格式

config = (
        Config("test /lotter*****st.php")
        .base_url("https://lotter****.com")
        .verify(False)
        .variables(
            **{"uid": "14**7",
               "choujiang_id": "*9",
               "username": "**"}
        )
    )

yml格式

config:
    name: "hz测试"
    base_url: "https://lottery.hz.z****in.com"
    variables:
        uid: "14***7"
        choujiang_id: "***"
        username: "**"

    verify: False

teststeps:
-
    name: "接口test /lotteryTest.php"
    request:
        method: GET
        url: /lotteryTest.php
        params:
          uid: $uid
          choujiang_id: $choujiang_id
          username: $username
    validate:
        - eq : ["status_code", 200]
        - eq : ["body.status", 1]

 

引用uid和choujiang_id/username变量用$uid,$pchoujiang_id,$username 完整的脚本如下:

 

 

 

局部变量

如果在steps下声明的变量,作用域只在当前steps下有效。声明变量用with_variables,变量和对应值用键值对,如

Step(
            RunRequest("get with params")
            .with_variables(
                **{"uid": "14**7",
                   "choujiang_id": "**",
                   "username": "**"}
            )
            .get("/lotteryTest.php")
            .with_params(**{"uid": "$uid", "choujiang_id": "$choujiang_id", "username": "$username"})
            .validate()
            .assert_equal("status_code", 200)
        ),

完整代码如下:

 

 运行结果如下:

 

posted @ 2020-07-25 09:10  yimu-yimu  阅读(1025)  评论(0编辑  收藏  举报