pytest参数化详解
时间: 2023-10-12 22:18:01 浏览: 73
pytest参数化是pytest框架提供的一种功能,可以在测试用例中使用多组数据进行测试,以便更全面地验证代码的正确性。参数化的使用方式有多种,包括装饰器、fixture等,下面是使用装饰器方式的详解。
首先,我们需要安装pytest库:
```
pip install pytest
```
然后,在测试文件中引入pytest库:
```python
import pytest
```
接下来,我们定义一个测试函数,并使用@pytest.mark.parametrize装饰器对该函数进行参数化:
```python
@pytest.mark.parametrize("num1, num2, result", [(1, 2, 3), (2, 3, 5), (3, 4, 7)])
def test_add(num1, num2, result):
assert num1 + num2 == result
```
上述代码中,我们定义了一个名为test_add的测试函数,该函数接受三个参数:num1、num2和result。然后,我们使用@pytest.mark.parametrize装饰器来对该函数进行参数化,传入了三组数据,分别是(1, 2, 3)、(2, 3, 5)和(3, 4, 7)。这样,pytest就会遍历这三组数据,按照num1、num2、result的顺序依次传入test_add函数中进行测试。
最后,我们可以使用pytest命令来运行测试:
```
pytest test_demo.py
```
运行结果如下:
```
collected 3 items
test_demo.py ... [100%]
=================================== 3 passed in 0.01s ===================================
```
可以看到,三个测试用例都通过了。其中,第一个测试用例传入的是(1, 2, 3),即1+2=3,符合预期;第二个测试用例传入的是(2, 3, 5),即2+3=5,也符合预期;第三个测试用例传入的是(3, 4, 7),即3+4=7,同样符合预期。
通过上述示例,我们可以看到pytest参数化的使用非常简单,只需要在测试函数上添加@pytest.mark.parametrize装饰器即可。另外,如果需要使用fixture来传递参数,也可以通过pytest.fixture装饰器来实现。
阅读全文