coverage.xml
ファイルを1つのファイルに結合して、HTML出力でグローバルレポートを表示できるかどうか疑問に思っています。
unit/functional tests
を1つのコマンドとして実行し、integration tests
を2番目のコマンドとして実行しています。つまり、unit/functional tests
のカバレッジはunit tests
によって上書きされます。
主にそれらのファイルを1つのファイルに結合することによって、その問題の解決策があれば、それは素晴らしいことです。
別の解決策を見つけました。 combine
機能を使用しました( ここを読んでください )したがって、次のようにカバレッジを実行します:coverage run -p
そして私はcoverage combine
。
それで全部です。 1つの結合されたレポートを生成します。
.xmlファイルを結合することはできませんが、生データファイルを結合することはできます。ワークフローは次のようになります。
$ COVERAGE_FILE=.coverage_func coverage run the_functional_tests.py
$ COVERAGE_FILE=.coverage_inte coverage run the_integration_tests.py
$ coverage combine
$ coverage xml
追加オプションを使用しても同じ結果を得ることができます。 3つのpythonスクリプトでカバレッジを実行したとします。最初のカバレッジの後、追加に-aを使用します。
coverage run first.py
coverage run -a second.py
coverage run -a third.py
レポートを印刷する
coverage report -m
出力:レポート
Name Stmts Miss Cover Missing
----------------------------------------------
first.py 97 1 99% 95
second.py 1 0 100%
third.py 10 0 100%
----------------------------------------------
TOTAL 108 1 99%
ソースコードがmy_project
というディレクトリにある場合、仮想環境にpytest
とpytest-cov
を含めていればこれを行うこともできます。
pytest --cov-report html --cov=my_project unit_tests
pytest --cov-report html --cov=my_project --cov-append functional_tests
--cov-append
は、単体テストの実行時に作成されたカバレッジファイルに機能テストカバレッジ情報を追加します。
カバレッジ実行コマンドで-aオプションを使用します。例:coverage run -a test1.pyこれにより、結果が既存のカバレッジファイルに追加され、カバレッジレポートを実行して同じことを確認します。