如何在 conftest 中使用 fixture 读取 配置文件的参数并设置不同的作用域,然后把不同作用域的参数传递给测试用例的模块中
时间: 2024-03-12 11:45:05 浏览: 100
读取配置文件,获取文件中的参数
在 conftest.py 中,可以定义一个 fixture 函数并设置不同的作用域,然后在该 fixture 函数中读取配置文件的参数,并将参数传递给测试用例所在的模块。具体步骤如下:
1. 在 conftest.py 中定义一个 fixture 函数,例如:
```python
import pytest
import configparser
@pytest.fixture(scope="session")
def config():
config = configparser.ConfigParser()
config.read("config.ini")
return config
```
这里定义了一个名为 config 的 fixture 函数,作用域为 session,用于读取配置文件 config.ini 中的参数。
2. 在 conftest.py 中定义一个 pytest_collection_modifyitems 函数,用于修改测试用例的参数。例如:
```python
def pytest_collection_modifyitems(items):
for item in items:
if "config" in item.fixturenames:
item.fixturenames.remove("config")
item.add_marker(pytest.mark.usefixtures("config"))
```
这里定义了一个 pytest_collection_modifyitems 函数,用于修改测试用例的参数。如果测试用例中有名为 config 的 fixture 函数,就将其从参数列表中删除,并使用 pytest.mark.usefixtures 标记,表示使用 conftest.py 中定义的 config fixture 函数。
3. 在测试用例所在的模块中,使用名为 config 的 fixture 函数。例如:
```python
def test_foo(config):
assert config.get("section", "key") == "value"
```
这里使用了名为 config 的 fixture 函数,用于获取配置文件中的参数。
通过上述步骤,就可以在 conftest.py 中使用 fixture 读取配置文件的参数,并将不同作用域的参数传递给测试用例所在的模块中。
阅读全文