解决Pytest执行时ModuleNotFoundError: No module named 'backend'问题
解决pytest执行时的ModuleNotFoundError问题
问题场景
测试文件test_logic.py中使用导入语句:
from backend.api.logic import my_class
通过VSCode的测试标签运行测试完全正常,但通过bat脚本执行以下命令时触发ModuleNotFoundError:
pytest --cov . test/
已尝试的无效方案
- 在相关目录添加
__init__.py文件 - 在测试文件中手动将项目路径添加到
sys.path
有效解决方法
在bat脚本中动态将项目根目录添加到PYTHONPATH环境变量,再执行pytest命令。示例bat脚本内容:
@echo off :: 替换为你的项目根目录路径,若脚本在项目根目录可直接用%~dp0获取当前目录 set "PYTHONPATH=%PYTHONPATH%;C:\path\to\your\project_root" pytest --cov . test/
如果bat脚本本身放在项目根目录下,可简化为:
@echo off set "PYTHONPATH=%PYTHONPATH%;%~dp0" pytest --cov . test/
原因说明
VSCode测试标签运行时会自动将项目根目录加入Python的搜索路径,而直接通过bat执行pytest时,默认不会识别项目的包结构,导致无法找到backend.api.logic模块。通过设置PYTHONPATH可以让Python解释器正确定位到项目的包目录。
内容的提问来源于stack exchange,提问作者JaviCV
相关产品推荐
相关产品推荐

