【python3 unittest】テスト結果をログ出力!TextTestRunner
unittestでテスト結果をログに出したくて、TextTestRunnerを使う際、TextTestRunnerに渡すパラメータのまとめ
ログを出す時のコードはこんな感じ
# unittest のメイン
if __name__ == '__main__':
# logのパス指定(logsディレクトリは事前に作っておきましょー)
logpath = 'logs/test.log'
# with構文でファイルオープン
with pathlib.Path(logpath).open('w') as fw:# unittest.mainにTextTestRunnerを渡す
unittest.main(
testRunner=unittest.TextTestRunner(
stream=fw,
descriptions=False,
verbosity=2))
TextTextRunnerの説明:
https://docs.python.org/ja/dev/library/unittest.html#unittest.TextTestRunner
引数とデフォルト値
TextTestRunner(stream=None, descriptions=True, verbosity=1, failfast=False, buffer=False, resultclass=None, warnings=None, *, tb_locals=False)
*stream
ログを出力する先のファイルを渡す。デフォルトのNoneのままだと、普通にコンソールに実行結果が出力される
*descriptions
testの説明を出力する場合はTrue, 出力しない場合はFalse
PythonのTrueFalseは先頭が大文字じゃないとエラーになるので注意ですー
*verbosity
大きい数字の方が、エラーの説明が詳細になる。最小0, 最大2の数字を指定。
ただ、下記だと0~9まで指定できるって書いてある、、、
試しに9を入れてみても10を入れてみても動いたけど、出力された文字は同じだった。
*failfast
初回のエラーもしくは失敗の時にテストを停止する場合はTrue, 出力しない場合はFalse
*buffer
テストの失敗やエラーの場合のみ出力する場合はTrue, 成功した時も出力する場合はFalse
*resultclass
結果を出力するクラスを指定。指定しない時は全てのクラスのエラーを出力
*warnings
テストの実行中に使うべき 警告フィルタ を指定。指定しない時は全ての警告を出力
*tb_locals
ローカル変数の状態を全て出力する場合はTrue。しない場合はFalse。
例えば、Trueにすると、テスト内でuserという変数を使っていた場合、user = "やまだ"などの変数に入っている値が出力されるようになる
以上ですーーーー!
おやすみなさいいいいぃぃ