将__init__.py导入到unittest包中

时间:2014-06-13 17:15:29

标签: python unit-testing testing

我有一个包和一个测试包。根据{{​​3}}的建议,测试应该在不同的目录中。项目的目录树如下:

project\
    kernel\
        __init__.py
        file1.py
        file2.py
    tests\
        __init__.py
        test1.py
        test2.py
        test3.py

我想将kernel包导入tests包,因为这是测试file1.pyfile2.py的地方。另外,我想在import中使用一个__init__.py语句,而不是在每次测试中一次又一次地导入kernel。 我尝试将以下内容添加到__init__.py中的tests文件以及test2.pytest2.py(一起和单独),但没有成功(第一个没有任何损害,第二个给出语法错误):

import kernel
import ../kernel

我正在使用python2.6。从命令行发生以上所有情况。当我使用Eclipse PyDev时,一切都神奇地起作用。

1 个答案:

答案 0 :(得分:2)

您正在使用的相对导入仅在“project”目录是python包时才有效(即其中包含__init__.py文件)。首先尝试一下,看看它是否适合你。

如果kernel目录充当将要分发的“包”,那么您可以将tests目录放在其中并以这种方式执行相对导入。所以它看起来像这样:

project/
    kernel/
        __init__.py
        file1.py
        file2.py
        tests/
            __init__.py
            test1.py ...

您可以将tests目录中的内核模块导入为:

from kernel import file1  # if it's installed in the python path/environment

或者:

from .. import file1
# 'import ..file1' might work, but I'm not sure that's syntactically correct