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 函数实现任意场景的数据驱动机制,当需要动态生成参数列表时也需要选择该种方式

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

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

相关推荐
呉師傅8 分钟前
关于惠普LaserJet1018打印机在Windows11上打印颜色偏淡的问题解决方法
运维·服务器·windows·计算机外设·电脑
九硕智慧建筑一体化厂家13 分钟前
楼宇智能优选!KNX总线系统打造稳定高效智能控制体系
运维·人工智能·笔记·智慧城市
正在走向自律15 分钟前
数采与虚拟仿真技术在电力智能运维赛道的实践探索
运维·数据采集·虚拟仿真·技能竞赛·人机协同·惯性动捕·电力智能运维
qq_113601493531 分钟前
CopyEscape Docker容器逃逸(CVE-2026-17106)
运维·docker·容器
修先生35 分钟前
WisQuery 一套开箱即用、可 Docker 一键部署的 智能问数 + 知识库 + 智能问答 一体化平台
运维·docker·容器
Rain的Java大神之路1 小时前
Docker搭建Redis集群完全指南
java·运维·redis·后端·docker·容器·架构
智购科技无人售货机厂家1 小时前
2026自动售货机远程运维平台设计:从设备诊断到预测性维护的工程实践~YH
运维·python·物联网·架构·django·scikit-learn
Raas1001 小时前
大模型网关和API网关区别是什么?MAI Gateway统一AI流量治理
java·大数据·运维·人工智能·gateway·企业级·ai网关
Dovis(誓平步青云)1 小时前
番茄钟真正难的不是倒计时:启动、暂停、重置与页面销毁
android·服务器·前端
吹什么轩1 小时前
Linux系统复习:权限的解析
linux·运维·服务器