conftest.py 文件简介
在 pytest 中,conftest.py 是一个特殊的配置文件,通常用于定义共享的 fixture、hooks 或其他全局设置,供整个项目中的测试使用。
conftest.py 文件可以帮助你管理项目级别的配置、共享的测试功能、预处理和清理操作,使得多个测试文件能够共享同一组配置或资源,而不需要在每个测试文件中重复定义。
conftest.py ⽂件名是固定的,不可以变化。
conftest.py 的生效规则
-
conftest.py必须放在项目的根目录下,并且文件名固定不可变化pythontests/ ├── conftest.py ✅ 作用于当前目录及子目录 ├── test_a.py │ └── sub_tests/ ├── test_b.py ✅ 也能用
运行机制
-
🔹 自动加载 :当运行 pytest 时,pytest 会自动搜索并加载当前目录及其上层目录中的
conftest.py文件。不需要显式地导入conftest.py中定义的 fixtures,它们会自动成为测试文件的一部分。 -
🔹 作用范围 :
conftest.py中定义的内容具有全局作用。conftest.py文件会应用于当前目录及其子目录下的所有测试文件。 -
🔹 目录层级 :pytest 会逐级向上查找
conftest.py文件。如果某个测试文件位于子目录中,它会加载该子目录下的conftest.py文件,并且会继续加载父目录的conftest.py文件,直到找到项目根目录下的conftest.py。
使用场景
-
多个测试文件共用同一资源
-
团队协作
-
框架级能力扩展
使用步骤
- 创建 conftest.py 文件:通常放在项目的根目录或一个特定的测试子目录中。
- 在 conftest.py 文件中定义 fixture 或者 hooks。
- 在测试用例中直接传入 fixture 名字,不需要在测试文件中导入。
代码示例
在项⽬根目录下创建 conftest.py 文件。
在 conftest.py 文件中定义登录和连接数据库两个 fixture。
在测试用例中直接传入以上两个 fixture 名称。
-
python
import pytest @pytest.fixture(scope="class") def login(): # setup 操作 print("完成登录操作") token = "abcd" username = 'hogwarts' yield token,username # 相当于return # teardown 操作 print("完成登出操作") @pytest.fixture() def connectDB(): print("连接数据库") yield print("断开数据库") -
test_get_product.py
pythondef test_get_product(login, connectDB): print("验证获取单品信息")- 运行结果

- 运行结果