conftest.py 设置全局变量
时间: 2023-04-25 14:03:35 浏览: 719
conftest.py 可以用来设置全局变量,可以在测试用例中使用。在 conftest.py 中,可以使用 pytest 的 fixture 功能来定义全局变量。例如:
```python
import pytest
@pytest.fixture(scope="session")
def global_var():
return {"name": "Tom", "age": 18}
```
在上面的例子中,我们定义了一个名为 global_var 的 fixture,它的作用域是 session 级别,也就是说它在整个测试会话中只会被执行一次。它返回一个字典,包含了两个全局变量 name 和 age。
在测试用例中,我们可以通过参数传递的方式来使用这个全局变量。例如:
```python
def test_global_var(global_var):
assert global_var["name"] == "Tom"
assert global_var["age"] == 18
```
在上面的例子中,我们定义了一个测试用例 test_global_var,它接受一个参数 global_var,这个参数就是我们在 conftest.py 中定义的全局变量。我们可以通过这个参数来访问全局变量中的值。
相关问题
pytest 设置conftest.py
要设置 Pytest 的 conftest.py 文件,可以按照以下步骤进行操作:
1. 在你的测试项目的根目录下创建一个名为 `conftest.py` 的文件。
2. 在 `conftest.py` 文件中,可以定义一些全局的测试夹具(fixtures),以供多个测试模块共享使用。
3. 在 `conftest.py` 文件中,你可以编写一些钩子函数(hook functions),用于在测试执行过程中进行一些配置或者操作。
4. 在 `conftest.py` 文件中,你还可以导入其他模块或者包,以便在测试中使用。
以下是一个简单的 `conftest.py` 文件的示例:
```python
import pytest
# 定义一个全局的测试夹具
@pytest.fixture(scope="session")
def my_fixture():
# 在这里可以进行一些初始化操作
yield
# 在这里可以进行一些清理操作
# 定义一个钩子函数,在测试运行之前进行一些配置
def pytest_configure(config):
# 在这里可以进行一些配置操作
# 定义一个钩子函数,在测试运行结束之后进行一些清理
def pytest_unconfigure(config):
# 在这里可以进行一些清理操作
```
注意,`conftest.py` 文件中定义的夹具和钩子函数在整个测试项目中都会生效。你可以根据需要在 `conftest.py` 文件中添加其他的夹具和钩子函数。
配置好conftest.py后设置好pytest.mark.usefixtures(),但是并不会执行conftest.py中相应的方法
如果你已经在 `conftest.py` 中定义了 Fixture 方法,并在测试文件中使用了 `pytest.mark.usefixtures()` 装饰器来调用 Fixture,但是发现 Fixture 方法没有被执行,可能有以下几个原因:
1. 确保 `conftest.py` 文件与测试文件在同一目录。`conftest.py` 文件必须与要调用它的文件在相同的目录下,这样 `pytest` 才能正确加载它。
2. 确保已正确安装了 `pytest`。可以使用以下命令安装最新版本的 `pytest`:
```shell
pip install pytest
```
3. 确保正确使用了 `pytest.mark.usefixtures()` 装饰器。在测试函数上使用 `pytest.mark.usefixtures()` 装饰器时,需要将 Fixture 名称作为参数传递给装饰器。
```python
import pytest
@pytest.mark.usefixtures("fixture_name")
def test_function():
# 测试逻辑
pass
```
如果你仍然遇到问题,请确保在测试文件中引入了 `conftest.py` 文件,例如,在测试文件的顶部添加以下导入语句:
```python
import pytest
pytest.register_assert_rewrite('conftest')
```
这将确保 `conftest.py` 文件中的 Fixture 方法能够正确地被执行。