2

Python でマルチプロセッシング アプリケーションを使用しています。そして、テストを実行した後にカバレッジ レポートを取得しようとしています。カバレッジ レポートをマージしようとしていますが、一度に行うことができません。

以下は私が直面している問題です。2 つのテストで 4 つのカバレッジ ファイルが生成されました。コマンド「カバレッジ結合」を実行すると、次のエラーが表示されます。

Can't combine line data with arc data

カバレッジ ファイルをマージするには、「カバレッジ結合」コマンドを 4 回実行する必要があります。しかし、さらに多くのテストを追加する予定であり、レポートを組み合わせることがさらに難しくなります。

では、すべてのカバレッジ レポートを一度にまとめるにはどうすればよいでしょうか。

PS: 構成ファイルを次のように設定しました。

[run]
branch = True
parallel = True
concurrency = multiprocessing

[report]
# Regexes for lines to exclude from consideration
exclude_lines =
    # Have to re-enable the standard pragma
    pragma: no cover

また、ライン カバレッジについて正しく結合されたレポートを取得できます。

編集:

これは、アプリケーションを実行してカバレッジを取得する方法です

coverage --rcfile=coverage_rc_file tester_script.py test1 test2

上記のコマンドはアプリを 2 回実行し、4 つのカバレッジ ファイルを生成します。

次に、次のコマンドを実行して結果を結合します。

coverage combine
4

3 に答える 3

1

単体テストでコードを複数のディレクトリで実行したときに、この問題に遭遇しました。各ディレクトリに .coveragerc ファイルを追加して、それらすべてにブランチ (別名アーク) データを生成させる必要がありました。これは、メインの .coveragerc ファイルにシンボリック リンクすることで行いました。

于 2016-10-04T21:29:56.057 に答える