pytest conftest.py文件详细使用方法
时间: 2024-11-13 20:23:25 浏览: 41
python pytest进阶之conftest.py详解
`pytest conftest.py`是一个Python配置文件,用于组织测试项目的共享设置、 fixtures (固定件) 和辅助函数。当你有多个测试模块需要共用的功能,或者想在整个项目中定义一些通用的行为,如数据库连接、日志配置等,就可以将它们放在`conftest.py`文件中。
**使用方法**:
1. **导入**: 在`conftest.py`文件中,你可以导入标准库中的pytest模块或其他自定义模块,然后定义你需要的全局设置或 fixtures。
```python
import pytest
from your_module import setup_database
# 定义全局 fixture
@pytest.fixture(scope='session')
def database():
setup_database()
yield
teardown_database() # 可选的清理操作
```
2. **定义fixture**: 这些函数在每个测试运行时只执行一次,并返回给所有请求它的测试。例如,上面的`database` fixture 设置了数据库并提供给整个测试会话。
3. **标记和分组**: 使用`@pytest.mark.parametrize`可以创建可重用的数据集合,或者使用`pytest.mark.usefixtures`指定哪些fixture对测试用例生效。
```python
@pytest.mark.parametrize('input_value, expected_output', [(1, 2), (2, 4)])
def test_multiply(input_value, expected_output):
assert input_value * 2 == expected_output
```
4. **元类(Metaclass)**: 如果你想改变测试类的行为,可以在`conftest.py`中定义一个元类,然后应用到特定的测试类上。
5. **自定义报告钩子**: `pytest_configure`, `pytest_unconfigure`, 等函数可以用来自定义测试运行的开始和结束阶段的行为。
**相关问题--:**
1. 如何在`conftest.py`中编写断言和异常处理?
2. 怎么样让`conftest.py`文件只在特定条件下被加载?
3. 除了`session`作用域外,还有哪些其他的fixture作用域可用?
阅读全文