自动化测试66 条

pytest 参数化

@pytest.mark.parametrize 把多组数据展开成独立用例,每组单独计数、单独失败定位;ids 参数为用例命名,多层叠加时按组合(笛卡尔积)展开。

软件测试速查开发更新于 2026-10-12

参数化示例

参数化示例
@pytest.mark.parametrize(
    "value,expected",
    [(1, 2), (2, 4), (9, 18)],
    ids=["one", "two", "nine"],
)
def test_double(value, expected):
    assert double(value) == expected
参数数据可来自文件或 fixture;组合层数增加时关注用例数量对执行时长的影响。

易错点

  • 用循环在单个用例里跑多组数据,失败只报最后一个断言
  • 参数化 id 不写清楚,报告里只看到数字下标,定位成本上升

数据来源与参考

  • pytest 官方文档:Parametrizing tests
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌