私は unittest を使用しており、各テストの後に「OK」、「エラー」、「失敗」を表す「.」、「E」、または「F」を出力します。どうすればオフにできますか? Python 2.7 を使用しており、これらの出力は組み込みのランナー クラスから取得されます。すべてネストされているため、クラスをオーバーライドするのは非常に難しいようです。
編集:文字 E のみを削除したい。および F は、私のテストで他のログと同時に表示されないためです。
私は unittest を使用しており、各テストの後に「OK」、「エラー」、「失敗」を表す「.」、「E」、または「F」を出力します。どうすればオフにできますか? Python 2.7 を使用しており、これらの出力は組み込みのランナー クラスから取得されます。すべてネストされているため、クラスをオーバーライドするのは非常に難しいようです。
編集:文字 E のみを削除したい。および F は、私のテストで他のログと同時に表示されないためです。
の出力はunittest
標準エラー ストリームに書き込まれ、別の場所にパイプできます。*nix ボックスでは、これは次のように可能です。
python -m unittest some_module 2> /dev/null
Windows では、これは次のようになります (Karl Knechtel に感謝):
python -m unittest some_module 2> NUL
Python からテストを実行する場合は、次のstderr
ようにストリームを簡単に置き換えることができます。
import sys, os
sys.stderr = open(os.devnull, 'w')
... # do your testing here
sys.stderr = sys.__stderr__ # if you still need the stderr stream
.、F、E シンボルの更新をオフにしたいだけなのでTestResult
、デフォルトのクラスをオーバーライドして独自のクラスを作成することもできます。私の場合 (Python 2.6)、これは次のようになります。
import unittest
class MyTestResult(unittest._TextTestResult):
def addSuccess(self, test):
TestResult.addSuccess(self, test)
def addError(self, test, err):
TestResult.addError(self, test, err)
def addFailure(self, test, err):
TestResult.addFailure(self, test, err)
これにより、文字の印刷が効果的にオフになりますが、デフォルトの機能は維持されます。
ここで、新しいクラスも必要であり、メソッドTestRunner
をオーバーライドします。_makeResult
class MyTestRunner(unittest.TextTestRunner):
def _makeResult(self):
return MyTestResult(self.stream, self.descriptions, self.verbosity)
このランナーを使用すると、ログなしのテストを楽しむことができます。
残念ながら、これはコマンドラインからはできません。
使用している単体テスト フレームワーク (標準、鼻など) に応じて、詳細度を下げる方法は複数あります。
python -m unittest -h
...
-q, --quiet Minimal output
...