为什么我的单元测试不能在Python中运行?

时间:2013-06-08 07:43:15

标签: python

我有

myapp/
    __init__.py
    lib.py
    tests/
        lib_test.py

在lib_test.py中我有:

import lib

从myapp运行时:

python tests/lib_test.py

我收到错误

ImportError: No module named lib

毫无疑问,这是某种初学者错误。但是我无法弄清楚出了什么问题。

2 个答案:

答案 0 :(得分:5)

当您尝试像上面那样执行import lib时,Python会尝试从您所在的目录开始查找导入(例如,如果您在myapp目录中,那么,它会找到lib.py并能够import lib)。但是,在包中导入时(基本上是__init__.py的任何内容),您应该使用显式包导入(如from myapp import lib),以便python解释器知道在哪里查找。这还有一个优点,即避免与lib发生命名空间冲突(即,如果您位于其中包含lib.py的其他文件夹中)。

底线:将import lib替换为from myapp import lib,您就会很好。

答案 1 :(得分:1)

您应该在__init__.py目录中添加tests/文件。