yaml 和parametrize的结合使用
时间: 2023-12-29 21:06:07 浏览: 119
python中yaml模块的使用
`YAML` 和 `@pytest.mark.parametrize` 可以结合使用来传递参数。这种方法可以使参数的组合变得更加灵活,易于管理。
下面是一个示例,展示了如何使用 `YAML` 和 `@pytest.mark.parametrize` 一起使用来测试一个函数:
```python
import pytest
import yaml
def add(x, y):
return x + y
with open('test_data.yaml', 'r') as f:
test_data = yaml.safe_load(f)
@pytest.mark.parametrize("test_input, expected_output", test_data)
def test_add(test_input, expected_output):
assert add(*test_input) == expected_output
```
在上面的例子中,我们首先定义了一个 `add` 函数,它接受两个参数并返回它们的和。然后我们从 `test_data.yaml` 文件中读取测试数据。`test_data.yaml` 文件的内容如下:
```yaml
- [2, 3]: 5
- [1, 1]: 2
- [0, 0]: 0
- [-1, 1]: 0
```
每个列表元素都是一个包含两个元素的列表,表示 `add` 函数的输入参数;而键值对则表示预期输出。
然后我们使用 `@pytest.mark.parametrize` 装饰器来定义输入参数和预期输出的参数组合,使用 `test_data` 中的数据作为参数。在测试函数 `test_add` 中,我们使用 `assert` 语句来检查 `add` 函数的输出是否与预期输出相同。
通过这种方式,我们可以轻松地管理和传递多个参数组合,并且在测试函数中使用这些参数组合进行测试。
阅读全文