pytest yaml参数驱动用例
时间: 2023-09-15 18:15:17 浏览: 92
pytest支持使用YAML文件来驱动测试用例,可以方便地将测试数据和测试逻辑分离,提高测试用例的可维护性和可读性。
下面是一个使用YAML参数驱动的示例:
```python
# test_example.py
import pytest
def add(a, b):
return a + b
@pytest.mark.parametrize("testdata", yaml.safe_load(open("testdata.yaml")))
def test_add(testdata):
assert add(testdata["a"], testdata["b"]) == testdata["result"]
```
YAML文件`testdata.yaml`内容如下:
```yaml
# testdata.yaml
- a: 1
b: 2
result: 3
- a: 3
b: 4
result: 7
- a: 0
b: 0
result: 0
```
运行测试用例:
```bash
$ pytest test_example.py
```
输出结果:
```
=============================== test session starts ===============================
platform darwin -- Python 3.9.6, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
rootdir: /path/to/project
plugins: anyio-3.3.0
collected 3 items
test_example.py ... [100%]
=============================== 3 passed in 0.01s =================================
```
其中`@pytest.mark.parametrize("testdata", yaml.safe_load(open("testdata.yaml")))`将YAML文件中的每组测试数据作为一个参数传递给`test_add`函数,`testdata`即为所传递的参数。在`test_add`函数中,我们可以通过`testdata["a"]`等方式来获取每组测试数据中的具体数据。如果测试用例执行成功,那么表示测试数据和测试逻辑都正确。
阅读全文