我开始学习pytest,稍后我想将它与Travis集成。我已经创建了第一个测试,并且可以毫无问题地从 PyCharm 运行它们。但是当我尝试从 Linux 终端运行 pytest 时,出现以下错误:
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/usr/lib/python3.6/importlib/__init__.py:126: in import_module
return _bootstrap._gcd_import(name[level:], package, level)
test_prob.py:1: in <module>
from src.agents import prob
E ModuleNotFoundError: No module named 'src'
我遇到了同样的问题,我的解决方案是将
pytest
作为模块执行。
python -m pytest
看来您已在 PyCharm 中将
src
标记为“源根”目录(该目录的蓝色表示),这意味着它已添加到 PATH 中。
这就是它在 PyCharm 中运行而不是在 shell 中运行的原因。您的 PyCharm 和终端环境具有不同的
PATH
设置。
尝试更改导入来源
from src.agents import prob
到
from proj_lokalizacja.src.agents import prob
同时从同一位置运行
pytest
(正如我们在评论中讨论的那样)
如果您不想更改导入语句,则必须更新
PATH
环境变量以包含 src
目录
我多次遇到同样的错误。运行
python -m pytest
并不能解决问题,但它可以使 pytest 正常工作。
我的解决方案很简单:
在根目录创建空的
文件。conftest.py
在这种情况下,它可以帮助
pytest
找到“src”文件夹。
[Exercise] Contact Book App/
|-- src/
| |-- main.py
|-- tests/
| |-- test_main.py
|-- conftest.py # just empty file