LoginSignup
100
91

More than 3 years have passed since last update.

最短で試すPythonテストコード

Last updated at Posted at 2018-08-01

はじめに

本記事は、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"を出力せよ」といった新しい要件が追加されたときに、安心してコードに手を加えられるのが良かったりしますね。



以上です。
ありがとうございました。

100
91
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
100
91