pytest.mark.parametrize
是 pytest
框架中一个非常强大的功能,用于对测试函数进行参数化。通过参数化,可以用不同的输入数据多次运行同一个测试函数,从而减少代码重复并提高测试覆盖率。
1. 基本用法
pytest.mark.parametrize
的基本语法如下:
import pytest
@pytest.mark.parametrize("input, expected", [
(1, 2),
(2, 4),
(3, 6),
])
def test_multiply_by_two(input, expected):
assert input * 2 == expected
在这个例子中,test_multiply_by_two
测试函数会被运行三次,每次使用不同的 input
和 expected
值。
2. 参数详解
- 第一个参数:一个字符串,表示测试函数的参数名称,多个参数用逗号分隔。
- 第二个参数:一个可迭代对象(通常是列表或元组),包含多组参数值。每组参数值可以是元组、列表或字典。
3. 多参数参数化
你可以同时参数化多个参数:
@pytest.mark.parametrize("a, b, expected", [
(1, 2, 3),
(4, 5, 9),
(10,