我知道这个问题已经被问了很多遍了,过去两个小时一直在研究它,但仍然无法弄清楚。非常感谢您解决我的实际问题,而不是尽可能与他人联系。
这儿...
/src
/moduleA
__init__.py
messages.py
/tests
testA.py
messages.py
def get_messages(paramA):
if paramA:
return "A"
else:
return "B"
testA.py
import unittest
from moduleA import messages
我的单元测试将仅检查A
函数是否返回B
或get_messages(...)
。
据我了解,moduleA
是一个模块,因为它有一个__init__.py
文件。 VSCode在测试中没有抱怨from moduleA import messages
行,但是,当我尝试执行testA.py
时,出现以下错误消息...
ImportError: No module named moduleA
。
还尝试使用python -m
如果有人能告诉我我做错了,将不胜感激。如果可以,我可以更改文件结构。也许我正在阅读的示例适用于Python 3,而我使用的是2.7?
谢谢。
答案 0 :(得分:1)
这是我对如何处理此问题的建议:ValueError: Attempted relative import in non-package not for tests package
因此,您需要在__init__.py
目录中添加一个test
,将一个目录备份到src
,然后运行python -m test.testA
,您应该一切顺利。
此外,一旦看到它可以成功运行,就会发现get_messages
中存在语法错误:else
之后缺少冒号。
答案 1 :(得分:-1)
首先,我们应该在运行文件之前检查配置。
使用空格进行交叉检查,例如:
ENVIRONMENT=mock
PYTHONPATH=./src