ほとんどの例外をキャッチしてログに記録し、ログ出力にアサーションを作成するサーバプログラムのユニットテストをいくつか書いています。私はtestfixturesパッケージがこの目的に有益であることを発見しました。例えば:予想通りロガー名、レベル、またはメッセージのどちらかではない場合documentation後Pythonのtestfixturesモジュールを使用してキャプチャしたログ出力をチェックするための 'ワイルドカード'
import logging
import testfixtures
with testfixtures.LogCapture() as l:
logging.info('Here is some info.')
l.check(('root', 'INFO', 'Here is some info.'))
、check
方法は、エラーが発生します。
タプルの他の要素にワイルドカードを使用してメッセージにアサーションを作成する、より柔軟なテストを実行したいと思います。このより厳格ではないアサーションは、
l.check((*, *, 'Here is some info.'))
のようになりますが、これは有効な構文ではありません。 testfixtures.logcapture.LogCapture
クラスのcheck
メソッドで「ワイルドカード」を指定する方法はありますか?
なお、パイソン3においても[assertLogs(https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertLogs)法があります'output'はコロン(': ')で連結された同じタプル(ロガー名、レベル、メッセージ)からなる文字列のように見えます。 –