【Python】pytestのcaplogを使ってログのテストをする

  • 2022年2月12日
  • 2023年5月18日
  • python

こんにちは。

野中やすおです。

caplogの使い方

今回の記事では、pytestのfixture(フィクスチャ)であるcaplogの使い方について扱いたいと思います。

caplogの公式ドキュメントは以下からアクセスできます。こちらも参照ください。

またfixtureとは、テストの前処理を行ってくれるpytestの機能の1つです。こちらの説明も公式ドキュメントを参照ください。

それでは論より証拠ということで、caplogを使ってみましょう!コードサンプルは以下のような形になります。

まずmypyを使って型アノテーションチェックを行っている方は、型アノテーションとしてcaplogにLogCaptureFixtureを設定しましょう。caplogは、LogCaptureFixtureインスタンスを返します。

次にset_levelメソッドでログレベルを設定します。今回は本体コードにlogger.infoを使っているためINFOを設定しました。またat_levelメソッドというのも存在します。

at_levelは、上記のように一部にログレベルを設定したい場合に使うことができます。withステートメントが終了後、ログレベルは元に戻ります。

そしてテストを実施したい関数を呼び出し、想定のログ内容が返ってきているかチェックします。
caplogにはいくつかのプロパティ/メソッドが用意されていますが、今回の例では一番シンプルに「フォーマットされたログ出力を含む文字列が入っているかどうかを確かめる」caplog.textを使用しました。これで’info’という文字列がログとして出力されていることが確認され、テストがpassするはずです。