SE(たぶん)の雑感記

一応SEやっている筆者の思ったことを書き連ねます。会計学もやってたので、両方を生かした記事を書きたいと考えています。 でもテーマが定まってない感がすごい。

Visual Studio CodeでのPython単体テストが便利すぎる件

以前、こういう試みを行い、今もGitHubにソースを格納しています。

hiroronn.hatenablog.jp

パソコンを新調したので、とりあえずGitVSCodePythonの試しをやっておこうと思い、以前書いたソースをクローンしていじっていました。

上記の記事で書いたソースでは、Pythonアノテーションを使用していました。

Python 3.7.0でさらに改良され、アノテーションの遅延評価がとりいれられたので、それを試すことを目的としました。

www.python.org

www.python.org

ただし、今回の本題はそこではないです*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利用時は、ターミナルからささっと実行できます。

VSCodePython拡張でテストする

コマンドラインで実行するテストですが、VSCodeから呼び出すこともできます。

Python標準のunittestを用いるものとします。

ソース構成

f:id:hiroronn:20180905073957p:plain

ルート
∟moneys(本体ソース)
∟tests(テストソース)
∟venv(Python仮想環境)

という構成です。

今回は、moneytests.pyを実行します。

テストは12個定義してあります。

セットアップ

前提として、VSCode上でPythonデバッグはできているものとします。

まず、コマンドパレット*2を出し、python test等と入力し、

f:id:hiroronn:20180905075734p:plain

Python: すべての単体テストを実行(Python: Run All Unit Tests)

を探します。

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

f:id:hiroronn:20180905075621p:plain

なので、Enabled and configure a Test Frameworkを選択します。

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

f:id:hiroronn:20180905080045p:plain

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

f:id:hiroronn:20180905081516p:plain

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

f:id:hiroronn:20180905081525p:plain

これで設定は終わりです。

実行

再び、コマンドパレットから

Python: すべての単体テストを実行(Python: Run All Unit Tests)

を選択します。

これだけで、すべてのテストが実行されます。

もはや、ターミナルでコマンドを入力する必要すらありません。

  • すべて成功時

f:id:hiroronn:20180905082807p:plain

テスト結果は画面下に表示されます。

最初に書いた通り、テストは12個あるので、すべて成功するとこのように表示されます。

  • 失敗時

f:id:hiroronn:20180905082904p:plain

失敗した場合も、画面下に表示されます。

テスト結果が表示されている部分をクリックして、「失敗したテストの再実行」等、いろいろなことが行えます。

ここが非常に大きな利点です。

unittest単体では難しかった、メソッド単位のデバッグ実行が行えます。

上の失敗画像にありますが、単体テストを実行すると、メソッドごとにRun TestDebug Testの文字が表示されます。

そこをクリックすると、テストを再度実行できます*4

f:id:hiroronn:20180905195924p:plain

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

f:id:hiroronn:20180905200802p:plain

普段は下にあるターミナルを右に持ってきています。

デバッグ実行後「デバッグコンソール」を開くと、テストメソッド名、テストのドキュメントコメント、成否が表示されます。

まあ、普通に実行しても「出力」には表示されます。コマンドで実行するより、いろいろ分かりやすいです。

設定変更

テスト設定を行うと、VSCodeで開いているフォルダの直下に.vscodeフォルダが作成され、その中にsettings.jsonというファイルがあります。

そちらから設定を変更できます。開くと下のような感じになっています。

f:id:hiroronn:20180905202203p:plain

コマンドパレットですべて再設定したい場合は、ワークスペースにあるpython.unitTestから始まる設定をすべて消すとよいです。

おわりに

コマンドでPython単体テストを実行するのも、さほど苦ではありませんでした。

しかし、これは楽すぎます。コマンドパレットの場合、キーボードから指を話す必要がありませんし、本当に楽です。

なんでも使ってみるものですね。

楽なので、ぜひ使ってみてください。

*1:アノテーションについても、別途記事を書く予定はある

*2:ctrl + shift + P、または右下の歯車 - コマンドパレット。メニューからも出せる

*3:命名規則はチーム内で決めておくべき

*4:実際には、テストメソッドをすべて実行している模様