python的导入并不支持单元测试

时间:2015-10-26 10:41:12

标签: python python-2.7 import python-unittest relative-import

我有以下目录树(Python 2.7):

./pkg
    ./main.py
    ./A
        ./a.py
    ./B
        ./b.py
    ./C
        ./c.py

a.py,b.py和c.py需要相互导入,所以我有两个选择:

  1. 使用相对导入,这意味着我必须从./pkg/main.py或目录树顶部的其他文件启动程序。 这非常好,但是当我将测试写入其中一个文件时,问题就出现了。我无法在导入a.py的./main/A中编写测试,因为a.py无法使用b.py和c.py,因此唯一的方法是编写测试函数在./main。

  2. sys.path 添加到每个文件中的./main的absulote路径中。这意味着我必须为所有文件写相同的三行,如果我有300个文件而不是3个,那就太痛苦了(很可能,不是最好的文件)。

  3. 那么,我该怎么办?

1 个答案:

答案 0 :(得分:0)

使用相对导入。

如果pkg是项目的根路径,请使用:

python -m unittest A.a

进行导入工作。