繁体   English   中英

Pytest“没有名为...的模块”问题

[英]Pytest "No module named..." issue

因此,当我运行 pytest 与直接调用测试模块时,我遇到了问题。 Pytest 实际上运行良好,但我在尝试直接调用我正在测试的 python 文件时遇到了问题。 这是基本的文件夹布局:

generate
├── generate
│   ├── __init__.py
│   ├── write_sql.py
│   └── utils.py
└── tests
    └── test_write_sql.py

test_write_sql.pywrite_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文件)。 我知道如果我将导入更改为在write_sql.pyimport utils ,那么直接调用write_sql.py可以了,但是 pytest 会遇到导入错误。

关于我应该使用什么导入方案来让 pytest 和直接调用工作的任何想法?

我在导入时遇到了同样的问题,我修复它的方式是设置所有导入以便代码运行。 为了运行测试而不是仅仅调用pytest (这会从它们所在的文件夹运行所有测试,因此会出现导入错误),应该像这样从根目录调用它:

python3 -m pytest

或者

python -m pytest

这样它会从根目录运行所有测试,并且它不应该给出导入错误

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM