Pytest 参数化进阶:掌握 parametrize 的多种用法
概述
在自动化测试中,@pytest.mark.parametrize
不仅仅能用来为测试函数提供多组输入数据,还能配合其他功能实现更复杂的测试逻辑。本文将带你深入了解 @pytest.mark.parametrize
的多种常见用法,助你在不同场景下写出更高效、更清晰的测试代码
基础用法回顾:单个参数化
这是最常见的用法,用于为测试函数传入多组参数。
可参考前面的讲解:Pytest中的参数化测试:提升效率的利器
import pytest@pytest.mark.parametrize("a, b, expected", [(2, 3, 5),(-1, 1, 0),(0, 0, 0)
])
def test_add(a, b, expected):assert a + b == expected
高级用法
嵌套参数化(多个参数标记)
如果你希望对多个维度进行组合测试,可以使用 多个 parametrize
装饰器,Pytest 会自动进行笛卡尔积组合。
import pytest@pytest.mark.parametrize("a", [1, 2])
@pytest.mark.parametrize("b", [3, 4])
def test_nested_parametrize(a, b):print(f"a={a}, b={b}")assert a + b > 0
这会生成 2 × 2 = 4 个测试用例:
test_nested_parametrize[a=1-b=3]
test_nested_parametrize[a=1-b=4]
test_