python - pytest 'No module named ...' 用于在测试模块中导入

标签 python flask pytest importerror pythonpath

我发现了一些类似的问题,但没有完全解决我的问题(例如 PATH issue with pytest 'ImportError: No module named YadaYadaYada' )

我的项目结构如下:

MyApp
 |
 +--MyApp
 |   |
 |   +--__init__.py
 |   +--app.py
 |   +--config.py
 |
 +--tests
     |
     +--__init__.py
     +--test_app.py

在我的 test_app.py 中,我导入了 app.py,它工作得很好。

从 MyApp 导入应用

但在 app.py 中,我像这样导入 config.py。

导入配置

通过此设置,我可以运行应用程序模块,但 pytest 无法导入“config”并引发:

导入错误:没有名为“config”的模块

当我将 app.py 中的导入语句更改为:

时,pytest 成功

从 MyApp 导入配置

但是,当我尝试运行应用程序时出现错误:

导入错误:没有名为“MyApp”的模块

通过阅读其他问题,我确信 PYTHONPATH 有问题,我只是不知道如何解决这个问题。

最佳答案

将 PYTHONPATH 变量设置为项目的根文件夹,并设置与此相关的所有其他路径

在您使用的同一文件夹中

导入模块

如果从您使用的其他文件夹引用

来自模块导入类

按上述方式更改项目中的引用,问题应该可以解决

关于python - pytest 'No module named ...' 用于在测试模块中导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47485759/

相关文章:

python - Flask 模板中点符号和方括号之间的区别

python - 如何在pytest中引发异常?

python - 如何指定 mypy 类型的 pytest_configure fixture ?

python - 如何通过变量/占位符的名称获取引用?

python - 在 while 循环中使用 "AND"而不是 "OR"

python - Django 文件字段 : how to set default value (auto-create empty file)?

python - 使用 Scrapy 抓取单个链接

python-3.x - 您如何将 Google Login (Oauth2) 限制为来自 Flask WebApp 的特定 Google Apps 域的电子邮件?

python - 如何在启用多进程的 Flask 应用程序中使用全局变量

python - 错误 : etheruem-serpent; version conflict