Python:如何在子目录中运行unittest.main()以针对所有源文件?

13 浏览
0 Comments

Python:如何在子目录中运行unittest.main()以针对所有源文件?

我正在开发一个Python模块,它包含多个源文件,每个源文件都有自己的测试类,继承自unittest。考虑以下目录结构:

dirFoo\
    test.py
    dirBar\
        __init__.py
        Foo.py
        Bar.py

为了测试Foo.py或者Bar.py,我会在Foo.py和Bar.py的源文件末尾添加以下代码:

if __name__ == "__main__":
    unittest.main()

然后在命令行上运行Python,例如:

$ python Foo.py
...........
----------------------------------------------------------------------
Ran 11 tests in 2.314s
OK

理想情况下,我希望"test.py"能够自动搜索dirBar中的所有继承自unittest的类,并调用"unittest.main()"一次。在实际操作中,怎样做才是最好的方式呢?

我尝试使用Python调用execfile来运行dirBar中的每个*.py文件,但这样只会运行找到的第一个.py文件并退出test.py的调用,而且我还需要在每个源文件中重复添加unittest.main()代码,这违反了DRY原则。

0