はじめに
3年ほど前にVScode上でのPython単体テストのカバレッジ可視化に関する以下の記事を書きました。
↑記事の投稿時はVScodeで単体テストカバレッジを可視化するために新しく拡張機能をインストールしたり、設定ファイルを手動で編集する作業が必要でした。しかし、2024年10月にリリースされたVScodeのPython拡張機能(v2024.16.0)から、カバレッジ可視化機能がネイティブサポートされるようになりました。
VScode上のPython開発プロジェクトでとても分かりやすくpytest単体テストのカバレッジ可視化ができるようになったので紹介します。
↑新しく追加されたRun Tests with Coverage
機能によるカバレッジ可視化画面
想定ユーザー
Pythonプロジェクトでpytest単体テスト実行方法を知っているユーザーを想定して説明します。またVScodeのPython拡張機能・単体テスト用のPythonライブラリpytestとpytest-covをインストール済であることを前提としています。
VScode上での単体テストカバレッジ表示
自分のPython製OSSプロジェクトのpyCirclizeソースコードを例としてpytest単体テストカバレッジ表示の手順を説明します。
単体テスト用の環境準備
例題プロジェクトをクローンし、必要な依存ライブラリをインストールする。Pythonライブラリはvenvを利用して仮想環境にインストールするのを推奨します。
# pyCirclizeプロジェクトのソースコードをローカルにクローン
git clone git@github.com:moshi4/pyCirclize.git
# 実行依存ライブラリと単体テスト用ライブラリをインストール
pip install -e . pytest pytest-cov
VScode設定ファイル準備
VScodeのテストエクスプローラー上でpytestの実行設定をしたことがある人はここに記載する準備はおそらく不要
PythonプロジェクトをVScodeで開いてテストエクスプローラーで下の画面が出た人は、VScode設定ファイル(settings.json)にpytestでの単体テスト実行用の設定パラメーターを追加する必要がある。
Configure Python Tests
を押下後に、pytest
→ tests
と選択すると以下の設定ファイルが作成され、VScode上で単体テストを実行できるようになる。
{
"python.testing.pytestArgs": ["tests"],
"python.testing.unittestEnabled": false,
"python.testing.pytestEnabled": true
}
単体テスト実行&カバレッジ表示
VScode上に開いたPythonプロジェクトのテストエクスプローラー上でRun Tests with Coverage
を押下することで、カバレッジ表示付きの単体テスト結果が表示される。
テストエクスプローラーの下側にモジュール単位でそれぞれのカバレッジ率がバッテリー残量のようなわかりやすい形式で表示され、またソースコード上でも単体テストが実行された行・されていない行がそれぞれ緑・赤でハイライトされます。単体テストのカバレッジ確認がとてもやりやすくなったなと思います。
最後に
2024年3月頃、VScodeに単体テストカバレッジ表示をサポートするためのネイティブAPIが実装されたので、Pythonでも活用できるようになるのを待ってました。2024年10月についにPython拡張機能で今回紹介したグラフィカルにわかりやすい形のカバレッジ表示をサポートするようになり、実際に利用してみてとても便利だなと感じました。この機能は実装されたばかりでまだ見落としている人も多い気がするので、この記事を読んで興味を持った人は活用してみてください。