【问题标题】:How to import module into a python unit test如何将模块导入python单元测试
【发布时间】:2021-01-09 01:31:03
【问题描述】:

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

来了……

/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?

谢谢。

【问题讨论】:

    标签: python python-2.7


    【解决方案1】:

    这是我关于如何处理这个问题的建议:ValueError: Attempted relative import in non-package not for tests package

    因此,您需要将__init__.py 添加到您的test 目录,将一个目录备份到src,然后运行python -m test.testA,您应该一切顺利。

    此外,一旦您看到它运行成功,您会看到get_messages 中有语法错误:else 后面缺少一个冒号。

    【讨论】:

      【解决方案2】:

      首先,我们应该在运行文件之前检查配置。

      使用以下空格进行交叉检查:

      ENVIRONMENT=mock
      PYTHONPATH=./src
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-08
        • 1970-01-01
        • 1970-01-01
        • 2015-12-10
        • 2011-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多