05-Httprunner-变量的使用

简介: 05-Httprunner-变量的使用

前言

  • 上一篇学习了变量的优先级,本篇来学习变量的具体使用

variables变量

  • 在 HttpRunner 中,支持变量声明(variables)和引用(var)的机制。
    在 config 和 step 中均可以通过 variables 关键字定义变量,然后在测试步骤中可以通过 $变量名称 的方式引用变量。
    区别在于:
  • 在 config 中定义的变量为全局的,整个测试用例(testcase)的所有地方均可以引用;
  • 在 step 中定义的变量作用域仅局限于当前测试步骤(teststep)

step 局部变量

  • yaml
config:
    name: "request methods testcase with functions"
    base_url: "https://postman-echo.com"
    verify: False
    export: ["foo3"] 
teststeps:
-
    name: get with params
    variables:
        foo1: bar11   # 声明局部变量,仅在当前步骤可用
        foo2: bar21
    request:
        method: GET
        url: /get
        params:
            foo1: $foo1  # 引用变量
            foo2: $foo2
        headers:
            User-Agent: HttpRunner/${get_httprunner_version()}
    extract:
        foo3: "body.args.foo2"
    validate:
        - eq: ["status_code", 200]
        - eq: ["content.args.foo1", "bar11"] 
        - eq: ["content.args.foo2", "bar21"]
  • pytest
RunRequest("get with params")
            .with_variables(
                **{"foo1": "bar11", "foo2": "bar21"}
            )

config 全局变量

  • yaml
config:
    name: "request methods testcase with functions"
    variables:
        foo1: config_bar1
        foo2: config_bar2
    base_url: "https://postman-echo.com"
    verify: False
    export: ["foo3"]
teststeps:
-
    name: get with params
    variables:
        foo1: bar11  # 定义全局变量,在所有步骤(整个yaml文件)都可用
        foo2: bar21
    request:
        method: GET
        url: /get
        params:
            foo1: $foo1  # 引用全局变量
            foo2: $foo2
        headers:
            User-Agent: HttpRunner/${get_httprunner_version()}
    extract:
        foo3: "body.args.foo2"
    validate:
        - eq: ["status_code", 200]
        - eq: ["content.args.foo1", "bar11"]
        - eq: ["content.args.foo2", "bar21"]
  • pytes
config = (
        Config("request methods testcase with functions")
        .variables(
            **{
                "foo1": "config_bar1",
                "foo2": "config_bar2"
            }
        )

.env环境变量

  • 在自动化测试中,有时需要借助环境变量实现某些特定的目的,常见的场景包括
  • 切换环境
  • 全局性公共配置(如:用户名、密码等)

使用

  • 格式: name=value
  • 引用环境变量使用ENV函数 ${ENV(name)
teststeps:
-
    name: login
    request:
        url: http://host/api/login
        method: POST
        headers:
            Content-Type: application/json
        json:
            username: ${ENV(USERNAME)}   # 引用环境变量
            password: ${ENV(PASSWORD)}
        validate:
            - eq: [status_code, 200]

说明

  • 环境变量文件名固定为 .env
  • .env不允许有空行,可以注释掉不需要的变量
  • .env 文件必须放到项目根目录(debugtalk.py同一层级)

相关文章
|
5月前
|
Python
Python中多变量赋值
【8月更文挑战第5天】
456 5
|
8月前
|
JavaScript 前端开发 Java
python中怎么使用作用域
python中怎么使用作用域
45 0
|
8月前
|
索引 Python
完美解决丨#在python中,如果引用的变量未定义,则会报告NameError: name ‘变量名‘ is not defined。
完美解决丨#在python中,如果引用的变量未定义,则会报告NameError: name ‘变量名‘ is not defined。
|
IDE 开发工具
Airtest启动器的妙用--添加自定义的变量
Airtest启动器的妙用--添加自定义的变量
271 0
|
测试技术
04-Httprunner-变量优先级
04-Httprunner-变量优先级
#PY小贴士# 函数也是对象
这就要提到 Python 中的一个重要概念:万物皆对象。除了我们熟知的数字、字符、列表、字典是对象外,函数、模块,甚至类型本身,也是对象,只不过在功能和表现上会有所不同。
#PY小贴士# 别弄错了 Python 里的这几个运算符
会出现这样问题的同学,多半是之前用过其他的编程语言,所以习惯性地认为 ^ 是表示次方,& 是表示逻辑与(同时满足条件)、| 是表示逻辑或(满足条件之一)。
|
Java Unix C语言
[oeasy]python0135_命名惯用法_name_convention
[oeasy]python0135_命名惯用法_name_convention
84 0
goland 无法导入某些文件的变量、结构体、函数
goland 无法导入某些文件的变量、结构体、函数