9.2 テストカバレッジの計測とレポート #
テストカバレッジは、あなたのテストがコードベースのどれだけをカバーしているかを定量的に評価する方法です。PythonとFlaskでテストカバレッジを計測するためには、coverageというツールを使用します。
必要なパッケージのインストール #
まずは、必要なパッケージをインストールしましょう。下記のコマンドを実行します。
$ pip install coverage
テストカバレッジの計測 #
次に、coverage.pyを使用してテストカバレッジを計測します。この例では、テストコードが tests フォルダに存在すると仮定します。
$ coverage run -m unittest discover -s tests
このコマンドは、coverage.pyを使用してテストを実行し、その結果をカバレッジデータとして収集します。このデータは、.coverageという名前のファイルに保存されます。
テストカバレッジレポートの作成 #
テストカバレッジのデータを収集したら、そのデータを人間が読める形式に変換する必要があります。そのためには、以下のコマンドを使用します。
coverage report -m
このコマンドは、テストがカバーした行数と総行数、カバレッジのパーセンテージ、各ファイルでカバーされていない行を表示するレポートを生成します。
coverage report コマンドを実行した後の出力は以下のようになります
$ coverage report -m
Name Stmts Miss Cover Missing
--------------------------------------------------------
my_project/__init__.py 10 2 80% 5, 9
my_project/main.py 30 5 83% 14-15, 20, 25, 30
my_project/routes.py 50 5 90% 37, 42, 47, 52, 57
my_project/models.py 70 10 86% 37-38, 42, 45-46, 49, 52-53, 56
my_project/tests.py 40 0 100%
--------------------------------------------------------
TOTAL 200 22 89%
このレポートは以下の情報を提供します:
- Name:ソースファイルの名前
- Stmts:ファイル内のステートメント(コード行)の数
- Miss:テストが実行しなかったステートメントの数
- Cover:テストカバレッジのパーセンテージ(ステートメントの数に対するカバーしたステートメントの割合)
- Missing:テストが実行しなかったステートメントの行番号
HTMLレポートを生成した場合、生成されるhtmlcovディレクトリ内には各ソースファイルごとにHTMLファイルが作成され、それぞれのファイルでテストがカバーしたコードとカバーしなかったコードを色分けして表示します。また、全体のカバレッジレートも表示されます。このレポートは、ブラウザで直接開くことができます。
まとめ #
テストカバレッジは、テストがどれだけのコードをカバーしているかを定量的に評価するための重要な指標です。coverage.pyを使えば、PythonとFlaskのコードのテストカバレッジを簡単に計測し、レポートを生成することができます。