unittest docs [ 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
ましたが、違いはありませんでした。)