上一小节我们学习了fixture的作用域,本小节我们学习一下pytest conftest.py文件的使用方法。
conftest.py文件的作用
conftest.py文件是pytest框架中的一个特殊文件,用于定义共享的设置、夹具(fixture)和钩子函数(hook)。
在pytest中,conftest.py文件可以用于在整个测试项目中共享夹具、配置和钩子函数。通过在conftest.py文件中定义夹具,你可以提供测试所需的初始化数据和对象,并使其在测试文件中可用。这样可以避免在每个测试文件中重复定义夹具,提高代码的复用性和可维护性。
此外,conftest.py文件也可以定义钩子函数,用于在测试执行的不同阶段插入自定义的行为。通过定义钩子函数,你可以在测试开始前、测试结束后或其他特定的测试事件发生时执行特定的代码逻辑。这样可以扩展和定制pytest的行为,实现特定的测试需求和额外的操作。
当pytest运行时,它会自动搜索项目中的conftest.py文件,并根据其中的定义来加载夹具和钩子函数。conftest.py文件可以位于项目的根目录下,也可以位于子目录中,它们会在对应的作用域内生效。
conftest.py文件的特点
- conftest.py文件名是固定的,不能修改
- contest.py文件不需要导入,pytest运行的时候会自动识别该文件
- conftest.py文件不能被其他文件导入
- 所有同目录测试文件运行前都会执行conftest.py文件
- conftest.py与运行的用例要在同一个pakage下,并且有__init__.py文件
- conftest.py作用于文件同级目录和子目录下的所有测试用例,当有多个conftest.py文件的时候,子目录的conftest.py文件优先级较高
- 如果希望fixture(夹具)共享给所有测试,则可以把conftest.py文件放在测试框架的根目录下。
- 定义夹具@pytest.fixture的作用域参数scope:session,module,class,function
- 可以跨.py文件调用,有多个.py文件调用时,可让conftest.py只调用了一次fixture,或调用多次fixture
conftest.py的使用
夹具(fixture)示例
conftest.py
import pytest
@pytest.fixture()
def conftest_fixture():
print("fixture前置")
yield
print("fixture后置")
test_demo.py
def test_case(conftest_fixture):
print("测试用例")
运行结果
====================&