我正在使用:
我知道nose或py.test比普通单元测试提供了更多的可能性。不过,这里的目标是坚持当前的环境。
我的suite.py
文件位于/tests
目录中,如下所示:
import unittest
loader = unittest.TestLoader()
suite = loader.discover('.')
runner = unittest.TextTestRunner()
runner.run(suite)
我以这种方式(从项目的根目录)运行它:
python -m unittest tests/suite.py
这将运行/tests
目录中的所有TestCase
,并在控制台中产生如下输出:
......ss....s............s.....s.s....s.....................s....ss.....s......s......s..........s...........s.....s.....s....s
----------------------------------------------------------------------
Ran 117 tests in 54.110s
OK (skipped=13)
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
问题是:
输出的第二部分是什么
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
也就是说,是指(以及为什么在其中)?
python -m unittest -v
时的状态一样)?我已经尝试过python -m unittest -v tests/suite.py
,但不能解决问题。答案 0 :(得分:0)
好吧,as is it sometimes happens,我想出了自己的问题的答案。实际上,这是一个answer to another question,让我对自己的失踪有所了解。
我发现的答案是:
控制台输出的第二部分:
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
是指当前模块(即已运行的文件)中的测试,在这种情况下为suite.py
。由于文件本身不包含TestCase
,因此输出为“空白”(可以很容易地验证:创建一个空文件test.py
,然后以python -m unittest tests/test.py
启动它-您将看到与上面的输出完全相同。)
为了从TestSuite
运行中获取详细的输出,必须将TestSuite
的创建包装在一个方法中(该方法返回创建的TestSuite
),而不是模块,但必须将方法传递给python -m unittest -v
。
因此,suite.py
必须更改为:
import unittest
def suite():
loader = unittest.TestLoader()
suite = loader.discover('.')
return suite
然后应通过python -m unittest -v tests.suite.suite
启动它,这将为每个测试提供详细状态,并避免不必要的... Ran 0 tests in 0.000s ...
输出。