`conftest.py` 中的 fixture 如何进行单元测试?
时间: 2024-09-07 12:01:49 浏览: 43
python pytest进阶之conftest.py详解
`conftest.py` 文件是pytest框架中的一个特性,它允许你在多个测试文件之间共享测试函数和测试固件。`conftest.py` 文件中定义的fixture函数可以被同一个目录及其子目录下的所有测试用例使用。
在`conftest.py`中定义fixture通常涉及到以下步骤:
1. 导入pytest库,并使用`@pytest.fixture`装饰器来标记一个函数作为fixture。
2. 定义fixture函数,并可以指定作用域(如`scope="module"`表示作用域为模块,`scope="session"`表示作用域为会话等)。
3. 在fixture函数中,编写用于准备测试环境的代码,比如创建临时文件、数据库连接或实例化测试对象等。
4. 使用fixture函数时,不需要直接调用该函数,而是通过参数名来引用它,pytest会自动注入这些参数。
下面是一个简单的`conftest.py`示例,展示了如何定义和使用fixture:
```python
# conftest.py
import pytest
@pytest.fixture(scope="session")
def setup():
print("开始测试会话的设置工作")
yield # 产生yield表示这是fixture的结束点,测试会在yield之后继续执行,结束前会进行清理工作
print("结束测试会话的清理工作")
@pytest.fixture
def sample_data():
return [1, 2, 3]
```
在测试文件中使用fixture:
```python
# test_example.py
def test_example(sample_data, setup):
print(f"测试使用了数据: {sample_data}")
# 进行测试断言等操作...
```
当你运行pytest时,它会自动发现`conftest.py`文件,并在运行测试时调用其中的fixture函数。
阅读全文