Visual Studio CodeでのPython単体テストが便利すぎる件
以前、こういう試みを行い、今もGitHubにソースを格納しています。
パソコンを新調したので、とりあえずGitとVSCodeとPythonの試しをやっておこうと思い、以前書いたソースをクローンしていじっていました。
上記の記事で書いたソースでは、Pythonの型アノテーションを使用していました。
Python 3.7.0でさらに改良され、アノテーションの遅延評価がとりいれられたので、それを試すことを目的としました。
- アノテーションの遅延評価
ただし、今回の本題はそこではないです*1。
バージョン等
| 名称 | バージョン |
|---|---|
| OS | Windows 10 Pro 64bit 1803 |
| Python | 3.7.0 |
| Visual Studio Code | 1.26.1 |
| Python(VSCode拡張機能) | 2018.7.1 |
結論
コマンド実行より楽で見やすくてデバッグ実行もできる。とても便利。
おさらい:Pythonの単体テスト
Pythonの標準テストフレームワークは、unittestというものです。コマンドラインで実行するものです。
とても手軽です。VSCode利用時は、ターミナルからささっと実行できます。
VSCodeのPython拡張でテストする
コマンドラインで実行するテストですが、VSCodeから呼び出すこともできます。
Python標準のunittestを用いるものとします。
ソース構成

ルート
∟moneys(本体ソース)
∟tests(テストソース)
∟venv(Python仮想環境)
という構成です。
今回は、moneytests.pyを実行します。
テストは12個定義してあります。
セットアップ
前提として、VSCode上でPythonのデバッグはできているものとします。
まず、コマンドパレット*2を出し、python test等と入力し、

を探します。
これを選択すると、テストの設定が無いよと怒られます。

なので、Enabled and configure a Test Frameworkを選択します。
すると、コマンドパレットでどのフレームワークを使うか選択をゆだねられます。ここでは、unittestを選択します。

次に、テスト対象フォルダを選択します。今回はtestsです。

その次に、テスト定義モジュールのファイル名命名規則を問われるので、適切なものを選びます。
今回はmoneytests.pyとつけてしまったので、*test*.pyになります*3。

これで設定は終わりです。
実行
再び、コマンドパレットから
を選択します。
これだけで、すべてのテストが実行されます。
もはや、ターミナルでコマンドを入力する必要すらありません。
- すべて成功時

テスト結果は画面下に表示されます。
最初に書いた通り、テストは12個あるので、すべて成功するとこのように表示されます。
- 失敗時

失敗した場合も、画面下に表示されます。
テスト結果が表示されている部分をクリックして、「失敗したテストの再実行」等、いろいろなことが行えます。
ここが非常に大きな利点です。
unittest単体では難しかった、メソッド単位のデバッグ実行が行えます。
上の失敗画像にありますが、単体テストを実行すると、メソッドごとにRun TestとDebug Testの文字が表示されます。
そこをクリックすると、テストを再度実行できます*4。

テストのデバッグは、IDEを使っていたら当たり前についている機能ですが、(一応)エディタであるVSCodeにも搭載されているとは…!
- デバッグ結果

普段は下にあるターミナルを右に持ってきています。
デバッグ実行後「デバッグコンソール」を開くと、テストメソッド名、テストのドキュメントコメント、成否が表示されます。
まあ、普通に実行しても「出力」には表示されます。コマンドで実行するより、いろいろ分かりやすいです。
設定変更
テスト設定を行うと、VSCodeで開いているフォルダの直下に.vscodeフォルダが作成され、その中にsettings.jsonというファイルがあります。
そちらから設定を変更できます。開くと下のような感じになっています。

コマンドパレットですべて再設定したい場合は、ワークスペースにあるpython.unitTestから始まる設定をすべて消すとよいです。
おわりに
コマンドでPythonの単体テストを実行するのも、さほど苦ではありませんでした。
しかし、これは楽すぎます。コマンドパレットの場合、キーボードから指を話す必要がありませんし、本当に楽です。
なんでも使ってみるものですね。
楽なので、ぜひ使ってみてください。