coverage.pyレポートからテストディレクトリを除外することは可能ですか?
-
06-07-2019 - |
質問
私は、Python単体テスト、特にcoverage.pyを使用する新人です。カバレッジレポートに実際のテストファイルのカバレッジを含めることが望ましいですか?
例としての HTMLレポートのスクリーンショットです。
レポートに tests / test_credit_card
が含まれていることがわかります。最初は、次のようにレポートから tests /
ディレクトリを省略しようとしていました。
coverage html --omit=tests/ -d tests/coverage
そのコマンドのいくつかのバリエーションを試しましたが、私の人生がテストを受ける/除外されるできないことができました。敗北を受け入れた後、テストファイルがレポートに含まれる想定かどうか疑問に思い始めました。
これについて誰かが光を当てることはできますか?
解決
編集:私は今、以下のコメントが良くないということに同意すると思う 本番コードのテストとテストのテストを混在させるアイデア コード。受け入れられた回答を削除できないので、そのままにしておきます。
** 私の答えをダウン票してください! **
テストのカバレッジが問題を指し示す可能性があるので、それを確認することをお勧めします。テストコードが実行されていない場合、それを記述する意味はありませんでした!
常に得られるのは、2つの単体テスト関数に同じ名前を付けるときです。元の数か月後に新しいテストを追加し、偶然同じ名前を選択します。 unittestフレームワークはこれについて文句を言いません-関数の1つは他を隠し、テストの1つを実行しません!ただし、詳細なカバレッジレポートには問題がすぐに表示されます。
テストに実行されていない他のコードがある場合、それは他のバグを指している可能性がありますが、通常、テストの起動方法によってはカバーされないボイラープレートコードの行が数行ありますが、 100%に到達することに取り付かないでください。
そして、本当に必要なくなったテストコードがある場合は、常に削除するのが良いでしょう!
他のヒント
coverage html --omit =" * / test *" -d tests / coverage
プロジェクトのルートフォルダーに .coveragerc
ファイルを作成し、以下を含めます。
[run]
omit = *tests*
また、どの項目を省略するかを指定する代わりに、どのディレクトリにコードを適用するかを明示的に指定することもできます。 .coveragerc
ファイルで、目的のディレクトリが demo
と呼ばれる場合、これは次のようになります
[run]
source = demo