pytest如何使用csv参数化
时间: 2024-08-24 21:00:43 浏览: 55
`pytest`是一个强大的Python测试框架,它支持参数化功能,包括对CSV文件的数据驱动测试。你可以通过`pytest.mark.parametrize`装饰器配合CSV数据来运行一系列相似的测试,每个测试用例都会使用CSV文件中的一行作为输入参数。
以下是使用步骤:
1. 首先,你需要有一个CSV文件,比如`data.csv`,它的每一行应包含用于测试的参数。例如,如果有两列`param1`和`param2`,内容可能是这样的:
```
param1,param2
value1a,value1b
value2a,value2b
```
2. 在测试模块中,使用`pytest.mark.parametrize`装饰函数,指定参数名、CSV文件路径以及需要读取的列名。假设你想测试函数`my_function(param1, param2)`:
```python
import csv
import pytest
@pytest.mark.parametrize("param1,param2", read_csv("data.csv", "param1", "param2"))
def test_my_function(param1, param2):
# 测试代码
result = my_function(param1, param2)
assert ... # 检查结果
```
`read_csv`函数会从CSV文件中读取数据:
```python
def read_csv(csv_file, *column_names):
with open(csv_file, newline='') as csvfile:
reader = csv.DictReader(csvfile, fieldnames=column_names)
for row in reader:
yield row
```
阅读全文