テスト スクリプトの Python コード カバレッジを追跡するために、 coverallsをcoverage.pyと組み合わせて使用します。次のコマンドを使用します。
coverage run --parallel-mode --source=mysource --omit=*/stuff/idont/need.py ./mysource/tests/run_all_tests.py
coverage combine
coveralls --verbose
これは、 multiprocessingを除いて非常にうまく機能します。ワーカー プールまたは子プロセスによって実行されるコードは追跡されません。
マルチプロセッシング コードも追跡する可能性はありますか? 私が見逃している特定のオプションはありますか?マルチプロセッシング ライブラリにラッパーを追加して、新しいプロセスが生成されるたびにカバレッジを開始するのでしょうか。
編集:
私 (および jonrsharpe も :-) は、マルチプロセッシング用のモンキー パッチを見つけました。
しかし、これは私にはうまくいきません。Tracis-CIビルドは開始直後に強制終了されます。ローカル マシンで問題を確認したところ、マルチプロセッシングにパッチを追加すると、メモリが失われるようです。1GB をはるかに下回るメモリしか必要としないテストでは、この修正により 16GB 以上が必要になります。
EDIT2:
モンキー パッチは、少し変更を加えると機能します。config_file
解析 ( config_file=os.environ['COVERAGE_PROCESS_START']
) を削除するとうまくいきました。これにより、肥大化したメモリの問題が解決されました。したがって、対応する行は次のようになります。
cov = coverage(data_suffix=True)