如何将模块导入python单元测试

时间:2018-08-08 10:10:49

标签: python python-2.7

我知道这个问题已经被问了很多遍了,过去两个小时一直在研究它,但仍然无法弄清楚。非常感谢您解决我的实际问题,而不是尽可能与他人联系。

这儿...

/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函数是否返回Bget_messages(...)

据我了解,moduleA是一个模块,因为它有一个__init__.py文件。 VSCode在测试中没有抱怨from moduleA import messages行,但是,当我尝试执行testA.py时,出现以下错误消息...

ImportError: No module named moduleA

还尝试使用python -m

运行它

如果有人能告诉我我做错了,将不胜感激。如果可以,我可以更改文件结构。也许我正在阅读的示例适用于Python 3,而我使用的是2.7?

谢谢。

2 个答案:

答案 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