Pytest内部应用插件无法被发现,按文档配置遇ImportError求助
解决Pytest同目录插件导入失败的问题
问题原因
pytest默认不会将tests/目录添加到Python的模块搜索路径(sys.path)中,因此直接通过MyPlugin导入同目录插件时,Python无法定位到该模块,从而抛出ImportError。
可行解决方案
1. 临时修改Python路径后运行pytest
在终端执行pytest命令时,把tests/目录加入PYTHONPATH:
- Linux/macOS环境:
PYTHONPATH=./tests pytest -s
- Windows命令提示符环境:
set PYTHONPATH=./tests && pytest -s
设置后Python就能识别同目录下的MyPlugin模块,直接使用pytest_plugins = ["MyPlugin"]即可正常加载插件。
2. 在代码中手动添加模块搜索路径
在test_TestPlugin.py或conftest.py的最开头插入以下代码,将当前文件所在的tests/目录添加到模块搜索路径:
import sys from pathlib import Path # 将tests目录加入Python模块搜索路径 sys.path.append(str(Path(__file__).parent)) pytest_plugins = ["MyPlugin",]
添加完成后直接运行pytest -s,插件即可正常被加载。
3. 将tests目录转为Python包
在tests/目录下创建一个空的__init__.py文件,让该目录成为可导入的Python包。此时仍需使用pytest_plugins = ["tests.MyPlugin"]导入插件,但这是符合Python项目结构规范的做法,适合长期维护的项目。
内容的提问来源于stack exchange,提问作者Rosevb
相关产品推荐
相关产品推荐

