解决 pytest 的模块导入错误的 PATH 问题
当使用 pytest 在具有分层文件结构的项目上运行测试时,您可以从应用程序路径导入模块时遇到“ImportError:没有名为...的模块”错误。这个问题是因为需要修改 sys.path 以包含必要模块的路径。
pytest >= 7 的推荐方法:pythonpath 设置
pytest 版本 7 及以上版本提供了使用 pythonpath 配置值的简化解决方案。这允许您将特定路径添加到 sys.path,而不需要解决方法。在配置文件(pyproject.toml 或 pytest.ini)中,您可以指定要包含的路径,例如:
[tool.pytest.ini_options] pythonpath = [ "." ]
[pytest] pythonpath = .
Original Answer for pytest 7:conftest解决方案
如果您使用的是旧版本的pytest(低于7),您可以使用空的conftest.py解决方案。这涉及在项目根目录中创建一个空的 conftest.py 文件。这会触发 pytest 自动将 conftest.py 文件的父目录添加到 sys.path 中,解决导入问题。说明
Pytest 在期间扫描 conftest 模块测试集合以收集定制挂钩和固定装置。要从这些模块导入自定义对象,pytest 将 conftest.py 的父目录添加到 sys.path。替代解决方案
此问题存在其他解决方案,具体取决于在您的项目结构上:结论
通过调整 sys.path 或使用 conftest.py 解决方案,可以解决“ImportError:没有名为...的模块”错误并确保在 pytest 环境中成功执行测试。以上是在分层项目结构中使用 pytest 时,如何修复'ImportError: No Module Named...”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!