pytest运行子目录测试文件导入父目录Python模块报ModuleNotFoundError如何解决
问题原因
该报错是运行pytest时,Python的模块搜索路径(sys.path)未包含项目根目录导致的,无法识别根目录下的filea.py模块。编辑器通常会自动将项目根目录加入搜索路径,因此编辑阶段不会报错,仅在执行pytest命令时触发异常。
解决方法
方法1:使用python -m pytest执行测试
在项目根目录下直接运行如下命令即可,Python的模块运行模式会自动把当前目录加入sys.path,无需修改任何代码,是最推荐的临时解决方式:
python -m pytest
方法2:根目录新增conftest.py文件
在项目根目录下新建空的conftest.py文件,pytest运行时会自动把conftest.py所在目录加入模块搜索路径,之后直接运行pytest命令即可正常执行,调整后目录结构如下:
├── conftest.py ├── filea.py └── tests └── test_filea.py
方法3:配置PYTHONPATH环境变量
执行pytest前临时指定PYTHONPATH为当前项目根目录即可:
- Linux/macOS环境执行:
PYTHONPATH=. pytest
- Windows Powershell环境执行:
$env:PYTHONPATH="."; pytest
如果需要永久生效,可以把项目根目录的绝对路径加入系统环境变量PYTHONPATH中。
方法4:使用pytest-pythonpath插件
先安装对应插件:
pip install pytest-pythonpath
然后在项目根目录新建pytest.ini配置文件,写入如下内容:
[pytest] pythonpath = .
配置完成后直接运行pytest命令即可正常执行测试。
内容的提问来源于stack exchange,提问作者user254340
相关产品推荐
相关产品推荐

