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

Rem*_*tec 3 python python-2.7

我知道这个问题已经被问过很多次了,在过去的两个小时里一直在研究它,但仍然无法弄清楚。如果可能的话,将非常感谢解决我的实际问题,而不是链接到其他问题。

开始...

/src
    /moduleA
        __init__.py
        messages.py
    /tests
        testA.py
Run Code Online (Sandbox Code Playgroud)

消息.py

def get_messages(paramA):
    if paramA:
        return "A"
    else:
        return "B"
Run Code Online (Sandbox Code Playgroud)

测试A.py

import unittest
from moduleA import messages
Run Code Online (Sandbox Code Playgroud)

我的单元测试将简单地检查函数是否返回A或。Bget_messages(...)

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

ImportError: No module named moduleA

还尝试运行它python -m

如果有人能告诉我我做错了什么,我将非常感激。如果有帮助的话,我可以改变我的文件结构。也许我一直在阅读的示例适用于 Python 3,而我正在使用 2.7?

谢谢。

who*_*ski 5

以下是我关于如何处理此问题的建议:ValueError: Attempted dependent import in non-package not for tests package

因此,您需要将一个目录添加__init__.py到您的test目录中,备份一个目录然后 src运行python -m test.testA,然后您就可以开始了。

另外,一旦您看到它成功运行,您就会发现 中存在语法错误get_messages:您在 后面缺少一个冒号else