在 unittest 文档 [ http://docs.python.org/2/library/unittest.html#unittest.main ] 中,我看到描述了以下方法签名:
unittest.main([module[, defaultTest[, argv[, testRunner[, testLoader[, exit[, verbosity[, failfast[, catchbreak[, buffer]]]]]]]]]])
最后一个选项是“缓冲区”。文档解释了有关此选项的以下内容:
failfast、catchbreak 和 buffer 参数与同名命令行选项具有相同的效果。
命令行选项的文档 [ http://docs.python.org/2/library/unittest.html#command-line-options ] 解释“缓冲区”如下:
-b, --buffer
在测试运行期间缓冲标准输出和标准错误流。通过测试期间的输出将被丢弃。输出在测试失败或错误时正常回显,并添加到失败消息中。
我有以下演示代码,它没有表现出预期的行为:
import unittest2
class DemoTest(unittest2.TestCase):
def test_one(self):
self.assertTrue(True)
def test_two(self):
self.assertTrue(True)
if __name__ == '__main__':
test_program = unittest2.main(verbosity=0, buffer=True, exit=False)
这个程序的输出是:
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
事实上,如果我将程序中的最后一行更改为:
test_program = unittest2.main(verbosity=0, buffer="hello", exit=False)
我究竟做错了什么?(我尝试使用unittest
而不是unittest2
,但没有任何区别。)