pytest 和conftest 结合使用
时间: 2023-07-08 11:13:11 浏览: 57
在 pytest 中,conftest.py 文件是一个特殊的文件,用于定义测试用例之间共享的 fixture 函数。fixture 函数可以在测试用例中通过名称来调用,这样可以避免重复编写代码。下面是 pytest 和 conftest 结合使用的示例:
1. 创建一个 conftest.py 文件,定义一个 fixture 函数:
```python
import pytest
@pytest.fixture(scope='session')
def login():
print("登录系统")
yield
print("退出系统")
```
2. 创建一个测试用例文件 test_demo.py,使用 conftest.py 中定义的 fixture 函数:
```python
def test_case1(login):
print("执行测试用例1")
def test_case2(login):
print("执行测试用例2")
```
在执行测试用例时,pytest 会自动查找 conftest.py 文件中定义的 fixture 函数,并将其传递给测试用例。在上面的示例中,每个测试用例都会先执行 login 函数,然后再执行测试用例本身。执行顺序如下:
```
登录系统
执行测试用例1
退出系统
登录系统
执行测试用例2
退出系统
```
这样可以确保每个测试用例都在同一个环境下执行,避免了测试用例之间的干扰。同时,也避免了重复编写登录和退出系统等代码的问题。
相关问题
pytest的conftest
pytest中的`conftest.py`文件是一个特殊的Python模块,它用于共享fixture函数和配置测试用例的参数。它必须与测试文件放置在同一个目录下或其上级目录。
当pytest运行时,它会查找所有的`conftest.py`文件,并且将其作为全局配置,因此它们中定义的fixture和参数可以在整个测试环境中使用。
要运行pytest并使用`conftest.py`文件,可以使用以下命令:
```
pytest conftest.py
```
这会告诉pytest去查找名为`conftest.py`的文件,并在运行测试时使用其中定义的fixture和参数。注意,你不需要在命令中列出所有的测试文件,pytest会自动发现它们。
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` 文件中添加其他的夹具和钩子函数。