『テスト駆動開発』のソースをPythonで書いてみる(着手報告)
『テスト駆動開発』という書籍は、絶版となっていましたが、再び翻訳され、出版された本です。
階段の写真が載っている本です。
この本のサンプルは、JUnitを使うことを前提に、Javaで書かれています。
しかし、そもそもテスト駆動自体は言語特有の話ではないため、当然、他の言語でも実践できます。
そこで、このブログでもよく話題に出している、Pythonでやってみます。
日本や世界のどこかで、同じことをやっている人はいると思いますが、自身の勉強のためです。
なお、作ったものはGitHubに上げています。まだ途中です。
読み進めながら作成しています。
完成したものはいずれお見せする*1として、今回は環境周りについて書きます。
ツール等
当ブログおなじみの、Visual Studio Codeを使います。
また、Pythonのテストフレームワークとして、標準*2のunittestを使います。
その他、利用するもののバージョン等は以下の通りです。
| ツール等 | バージョン | 補足 |
|---|---|---|
| OS | Windows 10 64bit | Fall Creators Update適用済み |
| Python | 3.6.3 | |
| pylint | 1.7.2 | |
| Python(VSCode拡張機能) | 0.8.0 | |
| Visual Studio Code | 1.18.1 | |
| PowerShell | 5.1.16299.64 | |
| Git | 2.15.0 |
フォルダ構成

色々調べましたが、上のように
ルート
∟テスト対象ソース
∟tests
とすると良いそうです。
unittestについて
unittestですが、Pythonの標準テストフレームワークであることは、先ほど述べたとおりです。
JUnitに触発されて作成した*3そうなので、メソッド名等はほぼ一緒です。
ただ、使う場合はコマンドラインから*4実行する、という特徴があります。
テスト対象メソッドの識別
JUnitの場合、@test等のアノテーションを付与して、テストメソッドの識別を行います。
Pythonでは、先頭にtestとついているメソッドを、テスト対象とするそうです。
命名規則と組み合わせると、test_となります。
テスト実行
PowerShell等で、プロジェクトのルートに移動し、以下のコマンドを入力します。
python -m unittest tests/moneytest.py
私はVisual Studio Codeの統合ターミナルを使っています。

ウィンドウ一つで作業できるので、楽です。
GitHubへのアップロード
GitHubを見ていただければわかりますが、章ごとにアップロードしています。
これを、開発フォルダだけで行うのは無理なので、別途Gitクライアント用のフォルダを用意し、完成物のみコピーして、アップロードしています。
今後
年内に、全章やりきる予定です。
現時点*5では、Javaとの違いで苦しむことはさほど無く、順調です。
動かし方や、細かい補足等は、また別の記事で。
今回は、やり始めたよ、という報告です。