unittest.main()运行包中的所有测试模块

时间:2017-08-14 00:37:31

标签: python python-unittest

我在\ tests中保存了几个测试模块。然后我通过指定

在运行主程序之前将它们加载到主类中
from tests.ClassTests1 import *
from tests.ClassTests2 import *
...

unittest.main()

有没有办法指示unittest.main()运行\ tests中的所有文件,而无需像上面那样无限次重复导入它们?例如。我尝试了from tests import *但它不起作用。

编辑:我是在程序化发现之后,而不是通过命令行发现。

非常感谢!

2 个答案:

答案 0 :(得分:2)

感谢John Gordon的链接。以下是使它对我有用的原因:

from tests.ClassTests1 import *

# Run test cases first
suite = unittest.TestLoader().discover('tests', pattern='ClassTests*.py')
result = unittest.TextTestRunner(verbosity=2).run(suite)

但是,我仍然需要导入至少一个测试模块,我不确定我是否正确执行此操作,因为它发现了tests的整个测试层次结构。

答案 1 :(得分:0)

来自https://docs.python.org/2/library/unittest.html,第25.3.3节。测试发现:

  

Unittest支持简单的测试发现。为了与测试发现兼容,所有测试文件必须是可从项目的顶级目录导入的模块或包(这意味着它们的文件名必须是有效的标识符)。

     

测试发现在TestLoader.discover()中实现,但也可以从命令行使用。基本命令行用法是:

     

cd project_directory

     

python -m unittest discover