[解決済み] Pythonのコードをnoseでテストするとき、ログメッセージはどのように検証すればよいですか?
2023-01-21 16:34:17
質問
私は、特定の条件下で、私のアプリケーションのクラスが標準のロギングAPIを介してエラーをログに記録することを検証する簡単なユニットテストを書こうとしています。 この状況をテストする最もきれいな方法が何であるかは、うまくいきません。
私は、noseがすでにロギングプラグインを通してロギング出力をキャプチャしていることを知っていますが、これは失敗したテストのためのレポートおよびデバッギング補助として意図されているようです。
私が見ることができるこれを行うための2つの方法は、次のとおりです。
- 断片的な方法 (mymodule.logging = mockloggingmodule) か、適切なモッキングライブラリで、logging モジュールをモックアウトしてください。
- 出力をキャプチャし、それを検証するために、Nose プラグインを書くか、既存のものを使用します。
もし私が前者のアプローチに行くなら、私はロギングモジュールをモックアウトする前にグローバルな状態をリセットする最もきれいな方法を知りたいです。
この件に関するヒントとヒントを楽しみにしています...
どのように解決するのですか?
以前はロガーをモックしていましたが、このような状況ではロギングハンドラを使うのが一番だと思い jkpさんが提案してくれたドキュメント (今は死んでいますが、キャッシュされた インターネット・アーカイブ )
class MockLoggingHandler(logging.Handler):
"""Mock logging handler to check for expected logs."""
def __init__(self, *args, **kwargs):
self.reset()
logging.Handler.__init__(self, *args, **kwargs)
def emit(self, record):
self.messages[record.levelname.lower()].append(record.getMessage())
def reset(self):
self.messages = {
'debug': [],
'info': [],
'warning': [],
'error': [],
'critical': [],
}
関連
-
[解決済み] PythonでHTTP GETを行う最短の方法は何ですか?
-
[解決済み】リクエストとレスポンスをモック化する方法は?
-
[解決済み】テストのInitメソッドでHttpContext.Currentをモックする
-
[解決済み] 他のモジュールを必要とするNode.jsモジュールをユニットテストする方法と、グローバルなrequire関数をモックする方法は?
-
[解決済み] モックの実装を単体テストごとに変更する方法【Jestjs
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] スペースがないテキストを単語のリストに分割する方法
-
[解決済み] 範囲指定された浮動小数点数のランダムな配列を生成します。
-
[解決済み] あるオブジェクトが数であるかどうかを確認する、最もパイソン的な方法は何でしょうか?
-
[解決済み] Pythonでマルチプロセッシングキューを使うには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] DataFrameの文字列、dtypeがobjectの場合
-
[解決済み] PythonでファイルのMD5チェックサムを計算するには?重複
-
[解決済み] googletransがエラー 'NoneType' オブジェクトに 'group' 属性がない、と言って動かなくなった。
-
[解決済み] 小数点以下1桁を取得する[重複]。
-
[解決済み] PythonからSMTPを使用してメールを送信する
-
[解決済み] 値で列挙名を取得する [重複]。
-
[解決済み] Django 1.7で初期マイグレーションからマイグレートバックする方法は?
-
[解決済み] Flask でグローバル変数はスレッドセーフか?リクエスト間でデータを共有するには?
-
[解決済み] djangoフレームワークでフォームフィールドから値を取得するには?
-
[解決済み] Pythonでリストが空かどうかをチェックする方法は?重複