はじめに
本記事は、FizzBuzzを題材にPythonでテストコードを書く際の自分向けの備忘録です。
最近よく目にする「テストコード最高!書かないやつは○○!」的なマウンティングゴリラ達に怯える初学者の助けに少しでもなれば幸いに思います。
テストコード
まずは早速テストコードから
test_fizzbuzz.py
# coding:utf-8
import unittest
import fizzbuzz as fb
class FizzBuzzTest(unittest.TestCase):
def setUp(self):
# 初期化処理
pass
def tearDown(self):
# 終了処理
pass
def test_normal(self):
self.assertEqual(1, fb.fizzbuzz(1))
def test_fizz(self):
self.assertEqual("Fizz", fb.fizzbuzz(3))
def test_buzz(self):
self.assertEqual("Buzz", fb.fizzbuzz(5))
def test_fizzbuzz(self):
self.assertEqual("FizzBuzz", fb.fizzbuzz(15))
if __name__ == "__main__":
unittest.main()
ここではテストクラスという物を定義しております。
最初の2関数def setUp(self)
とdef tearDown(self)
は今回使っているPythonのテスト用標準ライブラリunittest
の関数でそれぞれ初期化・終了のタイミングで走る関数、残りの4関数が今回定義したテストという事になります。
メインコード
次にメインコードです。
fizzbuzz.py
# coding:utf-8
def fizzbuzz(number):
if number % 15 == 0:
return "FizzBuzz"
if number % 5 == 0:
return "Buzz"
if number % 3 == 0:
return "Fizz"
return number
if __name__ == "__main__":
for i in range(1, 101):
print(fizzbuzz(i))
実行
上記2ファイルが用意出来たら、あとはテストコードを実行するだけです。
python test_fizzbuzz.py
以下のような結果が帰ってくればOK(=テストに通った)という事になります。
....
----------------------------------------------------------------------
Ran 4 tests in 0.000s
OK
結局何が嬉しいのか
テストコードが最も威力を発揮するのは、いわゆるリファクタリングと呼ばれる「コードの見直し」のときかと思います。
FizzBuzzでよくある「7の倍数のときは"Hoge"を出力せよ」といった新しい要件が追加されたときに、安心してコードに手を加えられるのが良かったりしますね。
以上です。 ありがとうございました。