2017-08-09 10 views
2

私は標準的なロギングライブラリを導入したアプリケーションを持っていますが、これをWARNINGに設定しました。テストの実行中にロギングレベルを変更します

unittestingを実行しているときに、私はこれらのエラーと警告が表示されているのを避けたいと思いますが(私が意図的に意図しているからです)、unittestingから冗長にしておきたいと思います。

私はログレベル(WARNING)と、別の1でテスト中の標準的なアプリケーションことができます任意の方法があります(noneまたはCRITICALは?)

たとえば、私は通常の動作モードで自分のアプリケーションをしたいです次を表示する:私の単体テストを実行するときに

===== 
Application started 
ERROR = input file is wrong 
===== 

しかし、私は実際に正しいエラー追跡をチェックするアプリは失敗になりますように私は、これらの出力のいずれかを表示したくないので、それはに冗長になりますエラーメッセージを表示し、問題の検出を実際に複雑にします。

  • 問題は印刷ではなく、ログだけの部分を排除

Is there a way to suppress printing that is done within a unit test?

  • である:私はいくつかの同様の問題を発見したが、私の問題を修正しませStackOverflowのために探し

    テストの冗長度

Turn some print off in python unittest

アイデア/助け?

+0

私はあなたが達成したいことを正確にはわかりません。あなたはテスト中にそれらをオフにしたいと言っていますが、テスト中にオンにしたいのですが、ロギングには興味がありません。試して、あなたが持っている正確な行動と、その行動がどんなものかを説明してください。 –

+0

@ PaulBecotte問題に関心をお寄せいただきありがとうございます。基本的には、テストや通常のアプリケーション操作では異なる動作が必要です。私はそれをもっと明示的にするいくつかの例を入れます –

答えて

1

私はまだ100%確信していません - あなたが望むのは、テスト中に抑制されるアプリケーションにログステートメントを持つことだと思います。

私はを使用します。これは、テストに合格するすべてのstdoutを抑制し、失敗したものとして出力します。私の意見では、あなたのユースケースにはちょうど完全です。

私があなたを理解していない場合は、すべてのテストが継承しているテストケースクラスを定義することです。これは余分なテストメソッドなどが必要です(unittest.TestCaseから継承する必要があります)自体)。ただし、テスト中にインポートされるファイル内のログレベルをより高い/より低いレベルに変更することができます。これにより、テスト中に特別なロギング動作を行うことができます。

しかし、ノーズの動作は最高です。これは失敗したテストでも出力を表示し、プリントステートメントもキャプチャします。

+0

まあ...あなたは実際にポイントを取得します。私が使っていたunittestの標準モジュールを変更すると、時間がかかったので、すべてをクロスチェックして、うまく動作します!正確に私が探していたものです、ありがとう!。ドキュメンテーションですぐに見つかった1つの質問は、メンテナンスであり、さらなる開発は期待できません。あなたはnose2をお勧めしますか? –

+0

いいえ、私が見た読書から、私はアップグレードの価値を見ませんでした。約3年間それを使用している - おそらくいつかはアップグレードする理由があるだろうが、それは私たちのためにうまくいくようだ。 –

関連する問題