httprunner参数化

1. 示例

引入对应的Parameters

1.1. CSV参数

复制代码
from httprunner import HttpRunner, Config, Step, RunRequest, Parameters
@pytest.mark.parametrize(
        "param", Parameters({"mobile_phone-pwd": "${P(csv_data/mobile_phone-pwd.csv)}"})
    )
    def test_start(self, param):
        super().test_start(param)

1.2. 列表参数

复制代码
@pytest.mark.parametrize(
        "param", Parameters({"phone": ["09551234911", "08186897716","07011698742"],
                             "biller": ["GLO", "9mobile","Airtel"]}
                            )
    )
    def test_start(self, param):
        super().test_start(param)

输出效果:笛卡尔积

1.3. 关联参数

复制代码
@pytest.mark.parametrize(
        "param",
        Parameters(
            {
                "user-password": [
                    ["test1", "123456"],
                    ["test2", "123456"],
                    ["test3", "123456"],
                    ["test4", "123456"],
                ]
            }
        ),
    )
    def test_start(self, param):
        super().test_start(param)

@pytest.mark.parametrize(
        "param", Parameters(
            {"mobileNo-biller": [
                ["09551234911", "GLO"],
                ["08186897716", "9MOBILE"],
                ["07011698742", "AIRTEL"]
            ]}
        )
    )
    def test_start(self, param):
        super().test_start(param)

2. 参数说明

参数名称的定义分为两种情况:

  • 独立参数单独进行定义;
  • 多个参数具有关联性的参数需要将其定义在一起,采用短横线(-)进行连接。

数据源指定支持三种方式:

  • 在 YAML/JSON/py 中直接指定参数列表:该种方式最为简单易用,适合参数列表比较小的情况
  • 通过内置的 parameterize(可简写为P)函数引用 CSV 文件:该种方式需要准备 CSV 数据文件,适合数据量比较大的情况
  • 调用 debugtalk.py 中自定义的函数生成参数列表:该种方式最为灵活,可通过自定义 Python 函数实现任意场景的数据驱动机制,当需要动态生成参数列表时也需要选择该种方式

三种方式可根据实际项目需求进行灵活选择,同时支持多种方式的组合使用。

假如测试用例中定义了多个参数,那么测试用例在运行时会对参数进行笛卡尔积组合,覆盖所有参数组合情况。

相关推荐
gaize12131 分钟前
服务器使用推荐
服务器·云计算
可可苏饼干2 分钟前
MySQL 索引
运维·数据库·学习·mysql
无代码专家10 分钟前
数字化转型下的订单管理全流程优化方案
大数据·运维·人工智能
i小白26 分钟前
Sql Server 大批量数据迁移
服务器·数据库
网硕互联的小客服28 分钟前
服务器的IO性能怎么看?
linux·运维·服务器·安全
小狗照亮每一天30 分钟前
【菜狗学编程】服务器基础知识——20251130
运维·服务器
徐同保32 分钟前
Nginx不能转发带有websocket功能的项目解决方案
运维·websocket·nginx
Guheyunyi35 分钟前
智能巡检系统:智能化管理的安全守护者
大数据·运维·服务器·人工智能·安全
枸杞CN37 分钟前
Ubuntu设置静态网络IP
linux·运维·服务器
讨厌下雨的天空43 分钟前
传输层TCP协议
服务器·网络协议·tcp/ip