如何访问作为子模块引入的公共仓库中定义的pytest fixture?
可用解决方案
方案1:根目录conftest导入共享fixture(适合固定配置,无需每次运行加参数)
操作步骤:
- 在repo A的根目录(与C文件夹平级的位置)新建
conftest.py文件,写入以下内容:
import sys from pathlib import Path # 将子模块C的目录加入Python导入路径 sys.path.insert(0, str(Path(__file__).parent / "C")) # 导入C中定义的所有fixture from conftest import *
pytest运行时会自动加载项目根目录下的conftest.py,导入的fixture会被pytest直接识别,所有测试用例都可以直接调用。
方案2:运行测试时指定conftest搜索目录(适合临时使用,无需修改项目文件)
操作步骤:
- 执行pytest命令时添加
--conftest-dirs参数指向子模块C的目录,命令示例:
pytest --conftest-dirs=C tests/
如果运行pytest的工作目录不是repo A的根目录,需要将参数值改为C目录的对应相对路径或绝对路径。
补充说明
你之前尝试的方案无效的原因:
- PYTHONPATH仅解决Python模块导入逻辑,不会让pytest自动扫描对应目录下的conftest.py文件
-p参数用于加载pytest插件,不适用普通conftest的加载场景
内容的提问来源于stack exchange,提问作者Juliusz Ryłko
相关产品推荐
相关产品推荐

