9.2 テストカバレッジの計測とレポート

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のコードのテストカバレッジを簡単に計測し、レポートを生成することができます。