在使用 pytest 时遇到错误“ImportError: No module named...”,重要的是要考虑PATH 配置的潜在问题,尤其是在 Linux 或 Windows 系统上。在这种特定情况下,用户在 Mac 上使用 easy_install 安装了 pytest,并在测试具有以下文件结构的项目时遇到了问题:
repo/ |--app.py |--settings.py |--models.py |--tests/ |--test_app.py
要解决此问题,建议使用以下方法:
Pytest 引入了一个核心插件,可以通过 'pythonpath' 配置设置启用 sys.path 修改。这个简化的解决方案涉及将以下行添加到项目的 pyproject.toml 或 pytest.ini 文件中:
# pyproject.toml [tool.pytest.ini_options] pythonpath = [ "." ] # pytest.ini [pytest] pythonpath = .
通过指定相对于根目录的路径条目,您可以有效地将该目录添加到 sys.path,解决导入问题。
对于旧版本的 pytest,一种侵入性较小的方法是在项目的根目录中创建一个名为“conftest.py”的空文件:
$ touch repo/conftest.py
这样做,pytest 会自动将 'conftest.py' 的父目录添加到sys.path,实现成功导入。
Pytest 在测试收集期间搜索“conftest”模块以收集自定义挂钩和固定装置。为了导入这些自定义对象,pytest 将 'conftest.py' 的父目录添加到 sys.path。
推荐的解决方法pytest 中的导入问题取决于您使用的版本。对于 pytest >= 7,首选“pythonpath”配置,而对于 pytest
以上是如何修复 Pytest 中的'ImportError:没有名为...的模块”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!