pytest conftest
conftest.py
是 pytest
中的一个特殊文件,用于定义全局的配置、夹具(fixtures)、钩子函数和插件。下面将详细解析 conftest.py
文件的用法,包括使用方法、规则、建议和案例。
使用方法
- 创建
conftest.py
文件:在项目根目录或子目录下创建conftest.py
文件。这个文件不需要显式导入,pytest
会自动识别并执行其中的配置。 - 定义夹具(fixtures):在
conftest.py
中,可以使用@pytest.fixture
装饰器来定义全局夹具。这些夹具可以在多个测试模块中被共享和使用。 - 定义钩子函数:
conftest.py
还可以定义全局的钩子函数,如pytest_runtest_setup
和pytest_runtest_teardown
,这些函数分别在测试用例执行前后执行。 - 配置全局信息:在
conftest.py
中,可以定义一些全局的配置信息,如日志级别、报告输出路径等。 - 导入自定义插件:
conftest.py
还可以用于导入自定义的pytest
插件,以扩展pytest
的功能。
规则
- 文件名称固定:
conftest.py
的文件名称是固定的,不能更改。 - 自动识别:
pytest
会自动识别项目中的conftest.py
文件,并执行其中的配置和夹具。 - 作用域:
conftest.py
中的夹具和配置具有不同的作用域,可以通过scope
参数来指定(如session
、module
、class
、function
)。 - 跨文件共享:
conftest.py
定义的夹具和配置可以在多个测试文件中共享。 - 位置影响:
conftest.py
的位置会影响其作用范围,通常建议放在项目的根目录或需要共享配置的公共目录下。
建议
- 全局配置集中管理:将全局配置和共享的夹具集中在
conftest.py
文件中管理,以提高测试的可维护性和可读性。 - 合理布局:根据项目结构,在合适的目录下创建
conftest.py
文件,以确保配置和夹具的作用范围符合预期。 - 避免重复:尽量避免在不同
conftest.py
文件中定义重复的夹具或配置,以减少混乱和维护成本。 - 使用文档:为
conftest.py
中的夹具和配置编写清晰的文档,说明其用途、参数和返回值等信息。
案例
以下是一个 conftest.py
的示例,展示了如何定义夹具和配置:
python
1 | # conftest.py |
在这个示例中,db_connection
和 test_data
是两个全局夹具,它们分别用于初始化数据库连接和准备测试数据。pytest_runtest_setup
和 pytest_runtest_teardown
是两个全局钩子函数,分别在测试用例执行前后执行。LOG_LEVEL
和 REPORT_PATH
是全局配置信息,用于指定日志级别和报告输出路径。这些配置和夹具可以在多个测试模块中被共享和使用。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 AGI Explained!
评论