@pytest.mark.parametrize** 参数化测试函数
如何参数化夹具和测试功能
@pytest.mark.parametrize 参数化测试函数
内置的pytest.mark.parametrize装饰器可以对测试函数的参数进行参数化。以下是测试函数的典型示例,该函数实现检索特定输入是否会产生预期输出
import pytest
@pytest.mark.parametrize("test_input,expected", [("3+5", 8), ("2+4", 6), ("6*9", 42)])
def test_eval(test_input, expected):
assert eval(test_input) == expected
这里,@parametrize
装饰器定义了三个不同的(test_input,expected)
元组,以便test_eval
函数将依次使用它们运行三次
下面是一个具体的例子,演示如何使用 @pytest.mark.parametrize
来测试一个简单的加法函数:
import pytest
def add_numbers(x, y):
return x + y
# 使用 @pytest.mark.parametrize 为测试函数提供多组参数
@pytest.mark.parametrize("x, y, expected", [
(1, 2, 3),
(0, 0, 0),
(-1, 1, 0),
(1.5, 2.5, 4.0)
])
def test_add_numbers(x, y, expected):
assert add_numbers(x, y) == expected
在这个例子中,test_add_numbers
测试函数会使用四组不同的 (x, y, expected)
参数值来运行。对于每组参数,它都会调用 add_numbers
函数,并检查返回的结果是否等于期望的值 expected
。
通过使用 @pytest.mark.parametrize
,你可以轻松地扩展测试用例以覆盖更多的输入情况,而无需编写大量的重复代码。这使得测试更加高效和可维护。