SE(たぶん)の雑感記

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

『テスト駆動開発』のソースをPythonで書いてみる(着手報告)

テスト駆動開発』という書籍は、絶版となっていましたが、再び翻訳され、出版された本です。

honto.jp

階段の写真が載っている本です。

この本のサンプルは、JUnitを使うことを前提に、Javaで書かれています。
しかし、そもそもテスト駆動自体は言語特有の話ではないため、当然、他の言語でも実践できます。

そこで、このブログでもよく話題に出している、Pythonでやってみます。
日本や世界のどこかで、同じことをやっている人はいると思いますが、自身の勉強のためです。

なお、作ったものはGitHubに上げています。まだ途中です。
読み進めながら作成しています。

github.com

完成したものはいずれお見せする*1として、今回は環境周りについて書きます。

ツール等

当ブログおなじみの、Visual Studio Codeを使います。
また、Pythonのテストフレームワークとして、標準*2unittestを使います。

その他、利用するもののバージョン等は以下の通りです。

ツール等 バージョン 補足
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

フォルダ構成

f:id:hiroronn:20171127083822p:plain

色々調べましたが、上のように

ルート
∟テスト対象ソース
∟tests

とすると良いそうです。

unittestについて

unittestですが、Pythonの標準テストフレームワークであることは、先ほど述べたとおりです。

JUnitに触発されて作成した*3そうなので、メソッド名等はほぼ一緒です。

ただ、使う場合はコマンドラインから*4実行する、という特徴があります。

テスト対象メソッドの識別

JUnitの場合、@test等のアノテーションを付与して、テストメソッドの識別を行います。

Pythonでは、先頭にtestとついているメソッドを、テスト対象とするそうです。
命名規則と組み合わせると、test_となります。

テスト実行

PowerShell等で、プロジェクトのルートに移動し、以下のコマンドを入力します。

python -m unittest tests/moneytest.py

私はVisual Studio Codeの統合ターミナルを使っています。

f:id:hiroronn:20171127085822p:plain

ウィンドウ一つで作業できるので、楽です。

GitHubへのアップロード

GitHubを見ていただければわかりますが、章ごとにアップロードしています。

これを、開発フォルダだけで行うのは無理なので、別途Gitクライアント用のフォルダを用意し、完成物のみコピーして、アップロードしています。

今後

年内に、全章やりきる予定です。
現時点*5では、Javaとの違いで苦しむことはさほど無く、順調です。

動かし方や、細かい補足等は、また別の記事で。
今回は、やり始めたよ、という報告です。

*1:執筆時点で、まだまだ完成していない

*2:Pythonをインストールしたら、一緒にインストールされる

*3:https://docs.python.jp/3/library/unittest.html

*4:統合開発環境を使った場合どうなるのか未検証。MSTest等に統合されるのか?

*5:4章まで終わった