tapitapi’s blog

1日1杯タピオカ!エンジニア

【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を入れてみても動いたけど、出力された文字は同じだった。

stackoverflow.com

 

*failfast

初回のエラーもしくは失敗の時にテストを停止する場合はTrue, 出力しない場合はFalse

 

*buffer

テストの失敗やエラーの場合のみ出力する場合はTrue, 成功した時も出力する場合はFalse

 

*resultclass

結果を出力するクラスを指定。指定しない時は全てのクラスのエラーを出力

 

*warnings

テストの実行中に使うべき 警告フィルタ を指定。指定しない時は全ての警告を出力

 

*tb_locals

ローカル変数の状態を全て出力する場合はTrue。しない場合はFalse。

例えば、Trueにすると、テスト内でuserという変数を使っていた場合、user = "やまだ"などの変数に入っている値が出力されるようになる

 

以上ですーーーー!

 

おやすみなさいいいいぃぃ