2020年1月26日日曜日

[SwE] テスト駆動開発(Kent Beck著)の第1章を写経するのにPythonを使ってみた話

「テスト駆動開発」(Kent Beck著)を読み進めてはいたんですが、どうもこう手を動かさないと学んでいる気がしないな、と思い写経を開始することに。
そもそも、TDDを何でやろうかな?と思ってるかというと。

  1. 設計としてテスト駆動開発を利用したい(いわゆるks設計はしたくない)
  2. ウォーターフォールに居る中での手法検討(どこが大変で導入コストとしてどこが受け入れられにくいのか)
  3. 暇つぶし


ただ、Java全然使ってない(業務ではC++、趣味とかでもPython)なのでどっちかで書こうかなと。とりあえずお手軽なPythonを選択。で、詰まった。「パッケージ構成どうしよう……?」

  1. いつもはワンライナー的な使い方やちょっとしたスクリプトとして運用している。
  2. パッケージ考えたことない……
  3. そもそもPythonのUnitTestプラットフォーム使ってない……

略/ProjectRoot---src---doller.py
                        test--test_doller.py

としてtest_doller.pyからfrom src.doller import Dollerとしてみたら、まあ動かない(そんなもんはない!って怒られる奴)。なんてことはなく、__init__.pyを置いてなかったせいなんですが。両方のディレクトリにとりあえず、__init__.pyを置いたら解決しました。
途中で.pth形式のファイルを置いてみたりしたんですけど、あんまり効果なかったですね。(実行はWindows10、Visual Studio Code、VSCode上のPowerShell)

あと本の途中で、型キャストをしているところがあったんですが、そこはtype()のチェック後、raise Exception("")無理やりやることにして試験したことにしました。
とりあえず1章抜ければ次はPythonコードで書いてあるのでそこを目指してやっていきます。では


メモ:
通常のアサート:
assert [Trueを期待する文]
例外発生確認:
with pytest.raises(Exception):
      [例外を期待する文]