1

私は長い間検索していましたが、驚くほど満足のいく回答は見つかりませんでした。複数のモジュールのPythonユニットテストカバレッジ

Pythonプロジェクトに複数のモジュール/ファイルがあり、unittestを使用するための単体テストを書いています。構造は、あるディレクトリ(例えばmyproject/production)にmodule_A.pymodule_B.pyという生産モジュールがあり、対応するテストファイルtest_module_A.pytest_module_B.pyが兄弟ディレクトリ(たとえばmyproject/tests)にあるような構造です。

今私は(coverage.pyがインストールされているとプロジェクト(testsディレクトリからプレフィックスtest_とのすなわちすべて.py -files)に関連付けられたすべてのテストを実行し、すべての生産・モジュールのカバレッジを示すカバレッジレポートを受信したいですmodule_A.pyおよびmodule_B.py)。

私はmyproject/testsディレクトリから次のコマンドを実行して、これを行うことができますことを考え出し:

  • coverage erase
  • coverage run -a --source myproject.production test_module_A.py
  • coverage run -a --source myproject.production test_module_B.py
  • coverage report

これは私を与えますその素敵なテーブルすべての私の生産モジュールとそのカバレッジ結果が表示されます。ここまでは順調ですね。

ただし、1つのコマンドでこれを行うことはできますか?私は1つのレポートに含めるテストを2つではなく20または200と仮定していますが、これを「手作業で」行うのはばかげているようです。

これを自動化する方法が必要ですが、見つからないようです。確かにシェルスクリプトがそれを行うかもしれないが、それはむしろ不器用である。私はunittest discoverのようなものを考えていますが、coverage.pyについてはこれはうまくいかないようです。

どういうわけか、カバレッジAPIを使用してこれを達成できますか?今まで私は運がないと思った。

SOLUTION:(クレジット氏ネッドBatchelderへ)

myproject/testsディレクトリの実行から:

coverage run --source myproject.production -m unittest discover && coverage report

一行、必要に応じた正確に何をして。

+0

あなたはnose2を知って、試してみることができます。 https://github.com/nose-devs/nose2 – yacc

答えて

1

これはそれを行う必要があります。

coverage.py run -m unittest discover 
+0

まさに私が探していたものです。私はちょうどあなたのパッケージについて何かを見逃していたことを知っていたありがとう!私のための完全な解決策は 'カバレッジラン - ソースmyproject.production -m unittest発見&&カバレッジレポート'でした。魅力のように働いた。 – JohnGalt

関連する問題