2017-01-21 4 views
0

コードの一部はWindowsで動作し、一部は他のプラットフォームでも動作します。 #pragma: no coverを適切に配置して、コードの適用範囲を広げたいと思います。したがって、プログラムがWindowsプラットフォームで実行されている場合、他のプラットフォームに関連するコードは無視しなければなりません。どうすればこれを達成できますか?プラットフォーム依存のPythonコードのカバレッジを改善する

+0

[Pythonカバレッジモジュールは条件付きで単体テストの行を無視できますか?](http://stackoverflow.com/questions/35513257/can-python-coverage-module-conditionally-ignore-lines-in-a -unit-test) – oblalex

答えて

0

.coveragercを作成し、レポート生成時にラインをスキップするための規則を定義します。

[report] 
exclude_lines = 
    pragma: no cover 
+0

しかし、プラットフォームが他の行を無視する場合、特定の行を無視するように指定するにはどうすればよいですか? –

+0

プラットフォームごとに異なる設定ファイルを作成できます。例えば。; 'pragma:no cover linux'と' pragma:no cover win32'など これらの設定を手動でカバレッジに渡すか、ターゲットプラットフォームに応じて自動的に選択します。 'setup.py'の中か、テストスーツランナーの中にあります。 – oblalex

1

より良い解決策は、すべての行を無視しないし、代わりに、すべてのプラットフォーム上でカバレッジを測定するために、その後、それらを組み合わせることです一緒に。

"parallel mode"でカバレッジを実行すると、各データファイルが異なる名前(parallel = true)を取得できます。次に、すべてのデータファイルを1つの場所にコピーし、「カバレッジ結合」と「カバレッジレポート」を実行します。

+0

きれいで清潔で+1 – oblalex

関連する問題