はじめに
Pythonのカバレッジ測定ツール「coverage.py」を使用してカバレッジレポートを出してみました。
カバレッジとはテストの際にどのコードが実行されたかを測定し、テストがどの程度のコードをカバーしているかを示します。
開発環境
- Windows 11
- VS Code
1.カバレッジの計測準備
1.coverageのインストール
まず、coverage
をインストールします。
pip install coverag
2.coverageの設定
プロジェクトのルートディレクトリに設定ファイル.coveragerc
を作成
.coveragerc
ファイルを作成する際の基本的な例
iniコードをコピーする
[run]
branch = True
source =
myapp1
myapp2
omit =
*/tests/*
*/migrations/*
*/admin.py
[report]
show_missing = True
[run]
セクション
-
branch = True
:この設定は、コードの分岐カバレッジ(条件分岐のカバレッジ)も測定することを意味します。通常のカバレッジ測定では各行が実行されたかどうかしか確認しませんが、
branch = True
とすると、if
やelse
などの条件分岐が実際にテストされたかどうかもチェックします。 -
source =
:カバレッジを測定する対象のソースコードのディレクトリやモジュールを指定します。ここでは、
myapp1
とmyapp2
という2つのアプリケーションが対象になっています。これにより、これらのアプリケーションに対してのみカバレッジ測定が行われます。 -
omit =
:カバレッジ測定から除外するファイルやディレクトリを指定します。ここでは以下が除外されています:
-
/tests/*
: テストファイルは除外されます。通常、テストコード自体がカバレッジの対象に含まれる必要はないためです。 -
/migrations/*
: Djangoのマイグレーションファイルも除外されます。これらはデータベーススキーマの変更を管理するためのもので、通常カバレッジに含める必要はありません。 -
/admin.py
: Djangoの管理インターフェースを構成するadmin.py
ファイルも除外されます。管理インターフェースの設定ファイルはしばしばテストの対象外とされます。
-
[report]
セクション
-
show_missing = True
:この設定により、カバレッジレポートでどの行がテストされなかったか(カバレッジが不足している部分)を表示します。これにより、どのコードがテストされていないかを簡単に把握することができます。
2.カバレッジの計測
次に、coverage
を使用してテストを実行し、カバレッジを計測します。
1.カバレッジ計測の実行:
Djangoプロジェクトのルートディレクトリで、以下のコマンドを実行します。
coverage run manage.py test
これにより、Djangoのテストスイートが実行され、テストカバレッジデータが収集されます。
2.カバレッジレポートの生成:
テスト実行後、次のコマンドでカバレッジレポートを表示できます。
coverage report
このコマンドは、カバレッジ結果をターミナル上に表示します。各ファイルごとにカバーされている行数とパーセンテージが表示されます。
次のようなレポートが生成されます
Name Stmts Miss Cover Missing
-----------------------------------------------------
myapp/views.py 50 10 80% 20-25, 30-35
3.HTMLレポートの生成:
より詳細なレポートを確認するために、HTML形式のレポートを生成することも可能です。
coverage html
これにより、htmlcov
というフォルダが生成され、その中にHTMLファイルが作成されます。これをブラウザで開くと、視覚的にカバレッジ率を確認できます。
3.HTML形式のレポートを見る
生成されたhtmlcov
というフォルダの中に index.html
があるので、VScodeで右クリックして、
エクスプローラーで表示を選択します。
そこで、ダブルクリックしてブラウザで開くことができます。