pytest中如何进行测试用例的重复执行
发布时间:2024-01-05 17:49:03
在pytest中,可以使用pytest.mark.parametrize装饰器来重复执行测试用例,并且为测试用例提供多组参数。
pytest.mark.parametrize装饰器接受一个或多个参数名称和参数值的列表,以及传递给测试用例的参数。参数值的列表可以包含任意数量的元组,每个元组表示一组参数值。装饰器将为每一组参数值生成一个新的测试用例,并将参数传递给测试用例函数。
下面是一个简单的例子,展示了如何使用pytest.mark.parametrize装饰器重复执行测试用例:
import pytest
def add(a, b):
return a + b
@pytest.mark.parametrize("a, b, expected", [
(1, 2, 3),
(4, 5, 9),
(10, 20, 30),
])
def test_add(a, b, expected):
result = add(a, b)
assert result == expected
在上面的例子中,test_add函数被装饰器装饰,并传递了三组参数,分别是(1, 2, 3),(4, 5, 9),(10, 20, 30)。装饰器会为每一组参数生成一个新的测试用例,并将参数传递给test_add函数。
如果运行上述代码,pytest会自动运行三次test_add函数,分别使用不同的参数。
另外,pytest支持使用pytest.mark.parametrize装饰器嵌套,实现多个参数的组合。下面是一个示例:
import pytest
def multiply(a, b):
return a * b
@pytest.mark.parametrize("a", [1, 2, 3])
@pytest.mark.parametrize("b", [10, 20, 30])
def test_multiply(a, b):
result = multiply(a, b)
assert result == a * b
在上述例子中,test_multiply函数使用了两个嵌套的装饰器,每个装饰器都接受一个参数名称和参数值的列表。当使用两个嵌套的装饰器时,pytest会生成九个测试用例,分别使用不同的参数组合来运行test_multiply函数。
总结起来,pytest中可以通过pytest.mark.parametrize装饰器来重复执行测试用例,并为测试用例提供多组参数。使用这个装饰器可以减少代码量,并简化测试用例编写的过程。
