私は長い間検索していましたが、驚くほど満足のいく回答は見つかりませんでした。複数のモジュールのPythonユニットテストカバレッジ
Pythonプロジェクトに複数のモジュール/ファイルがあり、unittest
を使用するための単体テストを書いています。構造は、あるディレクトリ(例えばmyproject/production
)にmodule_A.py
とmodule_B.py
という生産モジュールがあり、対応するテストファイルtest_module_A.py
とtest_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
一行、必要に応じた正確に何をして。
あなたはnose2を知って、試してみることができます。 https://github.com/nose-devs/nose2 – yacc