pytest--conftest.py用法(单独存放fixtrue配置的一个文件)
1、conftest.py文件是什么
- 单独存放fixtrue配置的一个文件
- 用处是可以多个不同的pytest测试脚本共用一套fixture配置,代码维护方便
2、conftest.py使用注意事项
- conftest.py文件不能修改名称,否则pytest检测不到
- conftest.py与运行的用例要在python同一个包下(ps:必须有 init.py)
- conftest.py文件配置好后,pytest自动检测并生效,不需要进行import导入
3、conftest.py文件使用实例
3.1. 单个包层级
-
代码结构层次
-
代码
-
上述实例要运行,只需要运行 test_demo_02.py 文件即可,会自动检测 conftest.py 文件中的fixtrue
-
通过上述实例,可以发现 test_demo_01.py 和 test_demo_02.py 都能引用到 conftest.py 文件中的fixtrue
3.2. 多个包层级,存在顶级包和测试包
-
代码结构层次
-
顶级目录pytest_demo包下的conftest.py代码
-
conftest_demo_02包下的conftest.py代码
-
conftest_demo_02包下的test_demo_01.py代码
-
conftest_demo_02包下的test_demo_02.py代码
-
运行结果
运行conftest_demo_02包下的test_demo_02.py代码,结果如下
3、conftest.py总结
-
上述包下实例要运行,只需要运行 test_demo_02.py 文件即可,会自动检测到所有 conftest.py 文件中的fixtrue
-
上例中包含了3个 conftest.py 文件,有顶层的,有测试包下的
-
上例执行后查看结果会发现本层的 conftest.py 文件先生效,然后再生效上一级包下的
-
在testadd方法中引用了本层和顶层的的fixtrue,可以看出顶层的fixtrue对本层级包以及子包下的测试方法都能生效
-
注意:conftest_demo_02包下的测试模块不能引用conftest_demo_01包下 conftest.py 的fixture,因为它们没有上下的层级关系
-
在实际使用 conftest.py 文件中,一般会把顶层的fixtrue的scope设置为session,存放整个项目需要使用的初始化操作或数据