Pythonのunittestモジュールは、テストの開発や実行のための優れたツールを提供しています。しかし、テストの結果を出力せずに、テストの結果を自分で処理したい場合があります。そのような場合には、unittest.TextTestRunner
を完全に静かにする方法があります。
TextTestRunnerを完全に静かにする
unittest.TextTestRunner
は、そのコンストラクタにstream=sys.stderr
を持っています。これをnullストリームに変更することで、TextTestRunner
は何も出力しなくなります。以下にその方法を示します。
import unittest
import os
class TestMyFunction(unittest.TestCase):
def test_function(self):
# テストの内容を書く
alltests = unittest.TestSuite()
alltests.addTest(unittest.makeSuite(TestMyFunction))
result = unittest.TextTestRunner(stream=open(os.devnull, 'w')).run(alltests)
if len(result.failures) or len(result.errors):
print("Sorry.")
このコードでは、unittest.TextTestRunner
のstream
パラメータにopen(os.devnull, 'w')
を設定しています。これにより、テストの結果は出力されず、run
メソッドから返されるTestResult
オブジェクトを自分で処理することができます。
まとめ
Pythonのunittestモジュールは非常に強力なツールですが、その出力を制御する方法を知っておくと、さらに柔軟にテストを書くことができます。この記事では、unittest.TextTestRunner
を完全に静かにする方法を紹介しました。これにより、テストの結果を自分で処理することが可能になります。