httprunner参数化

本文介绍了如何在Python测试框架pytest中使用`@pytest.mark.parametrize`和`Parameters`类来实现CSV、列表和关联参数的测试用例,包括数据源的多种指定方式以及笛卡尔积的使用,以实现数据驱动的测试覆盖。
摘要由CSDN通过智能技术生成

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

三种方式可根据实际项目需求进行灵活选择,同时支持多种方式的组合使用。
假如测试用例中定义了多个参数,那么测试用例在运行时会对参数进行笛卡尔积组合,覆盖所有参数组合情况。

  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
httprunner是一个基于Python的开源接口自动化测试框架,它提供了丰富的功能和便捷的接口来进行接口测试。 在httprunner中,参数和返回值是在测试用例中进行定义和使用的。 1. 参数(Variables):httprunner允许在测试用例中定义参数,用于在不同的请求之间共享数据。参数可以通过两种方式定义: - 在测试用例文件的顶部定义全局参数,可以在整个测试用例中使用。 - 在每个测试用例的请求中定义局部参数,只能在当前测试用例中使用。 定义参数的语法为: ```yaml variables: - 参数1: 值1 - 参数2: 值2 ``` 参数的值可以是固定值,也可以是函数表达式或者引用其他参数的方式来动态获取。 2. 返回值(Extract & Validate):在httprunner中,可以通过提取器(extractor)和校验器(validator)来对请求的返回值进行处理和验证。 - 提取器用于从请求的返回值中提取需要的数据,并将其作为参数存储起来,以供后续请求使用。 - 校验器用于对请求的返回值进行断言验证,以确保接口的返回结果符合预期。 提取器和校验器的定义通常在测试用例的验证部分进行,例如: ```yaml validate: - eq: ['status_code', 200] - eq: ['headers.Content-Type', 'application/json'] extract: - data.token: ['body.token'] ``` 上述示例中,校验器使用了eq断言方法来验证状态码和Content-Type的值,提取器将请求返回的body.token的值提取出来,并存储在data.token参数中。 这些是httprunner中参数和返回值的基本概念和用法,通过合理的使用,可以提高接口测试的灵活性和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值