因此,当我运行 pytest 与直接调用测试模块时,我遇到了问题。 Pytest 实际上运行良好,但我在尝试直接调用我正在测试的 python 文件时遇到了问题。这是基本的文件夹布局:
generate
├── generate
│ ├── __init__.py
│ ├── write_sql.py
│ └── utils.py
└── tests
└── test_write_sql.py
在 test_write_sql.py
和 write_sql.py
中,我使用 generate
模块导入内容,如下所示:
from generate import utils
从根generate
文件夹运行pytest
工作正常。但是,当我尝试直接从根 generate
文件夹调用 write_sql.py
时,我遇到了以下错误:
root@637572f508b9:~/generate# python3 generate/write_sql.py
Traceback (most recent call last):
File "/root/generate/generate/write_sql.py", line 5, in <module>
from generate import utils
ModuleNotFoundError: No module named 'generate'
我的印象是,从 generate
根文件夹运行 Python 应该将 generate
子文件夹作为模块添加到系统路径中(由于包含 __init__. py
文件)。我知道如果我将 import 更改为 write_sql.py 中的 import utils ,那么直接调用 write_sql.py 就可以了,但是 pytest 会遇到 import错误。
关于我应该使用什么导入方案来使 pytest 和直接调用工作有什么想法吗?
最佳答案
我在导入方面遇到了同样的问题,我修复它的方法是设置所有导入以便代码运行。为了运行测试而不是仅仅调用 pytest (这会从它们所在的文件夹运行所有测试,因此会出现导入错误),应该从根目录调用它,如下所示:
python3 -m pytest
或
python -m pytest
这样它就可以从根目录运行所有测试,并且不会出现导入错误
关于python - Pytest "No module named..."问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72564730/