以前、こういう試みを行い、今も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
の単体テストを実行するのも、さほど苦ではありませんでした。
しかし、これは楽すぎます。コマンドパレットの場合、キーボードから指を話す必要がありませんし、本当に楽です。
なんでも使ってみるものですね。
楽なので、ぜひ使ってみてください。