如何使用 -v 标志 运行 Python 的 unittest.TestSuite()?
How to run Python's unittest.TestSuite() with -v flag?
我正在使用:
- Python 3.6.1
- 原版unittest framework
我知道 nose or py.test 提供了比普通单元测试更多的可能性。不过,这里的objective是为了坚持现在的环境。
我的 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
也就是说,指的是(为什么它在那里)?
- 如何从 运行ning 套件中获取详细输出(即每个测试的状态,与 运行ning
python -m unittest -v
从项目的根目录中一样)?我试过 python -m unittest -v tests/suite.py
,但没有成功。
嗯,as is it sometimes happens, I figured out an answer to my own question.It was an answer to another question,实际上,这让我知道我错过了什么。
我发现的答案是:
控制台输出的第二部分:
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
指的是当前模块中的测试(即 运行 的文件),在本例中为 suite.py
。由于文件本身不包含 TestCase
,因此输出为 'blank'(可以很容易地验证:创建一个空文件 test.py
,然后将其作为 python -m unittest tests/test.py
启动——你将看到与上面完全相同的输出。
为了从 TestSuite
运行 获得详细的输出 — TestSuite
的创建必须包含在一个方法中(returns创建的 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 ...
输出。
我正在使用:
- Python 3.6.1
- 原版unittest framework
我知道 nose or py.test 提供了比普通单元测试更多的可能性。不过,这里的objective是为了坚持现在的环境。
我的 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
也就是说,指的是(为什么它在那里)?
- 如何从 运行ning 套件中获取详细输出(即每个测试的状态,与 运行ning
python -m unittest -v
从项目的根目录中一样)?我试过python -m unittest -v tests/suite.py
,但没有成功。
嗯,as is it sometimes happens, I figured out an answer to my own question.It was an answer to another question,实际上,这让我知道我错过了什么。
我发现的答案是:
控制台输出的第二部分:
---------------------------------------------------------------------- Ran 0 tests in 0.000s OK
指的是当前模块中的测试(即 运行 的文件),在本例中为
suite.py
。由于文件本身不包含TestCase
,因此输出为 'blank'(可以很容易地验证:创建一个空文件test.py
,然后将其作为python -m unittest tests/test.py
启动——你将看到与上面完全相同的输出。为了从
TestSuite
运行 获得详细的输出 —TestSuite
的创建必须包含在一个方法中(returns创建的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 ...
输出。