Python でユニットテストを記述する (unittest)

Python でユニットテストを書くには、unittest モジュール を使用します。 unittest モジュールは、Python 2.1 以降に標準で搭載されています。

テストケースを作成するには、unittest.TestCase を継承したクラスを作成し、test で始まる名前のテストメソッドを記述するだけで OK です。 unittest.main 関数を呼び出すことにより、それらのテストメソッドが自動的に実行されます。

sample.py
import unittest

class Counter:
    def __init__(self):
        self.count = 0

    def increment(self):
        self.count += 1

    def decrement(self):
        self.count -= 1

    def get_count(self):
        return self.count


class CounterTest(unittest.TestCase):
    def setUp(self):
        pass

    def tearDown(self):
        pass

    def test_increment(self):
        c = Counter()
        c.increment()
        self.assert_(c.get_count() == 1)
        c.increment()
        self.assert_(c.get_count() == 2)

    def test_decrement(self):
        c = Counter()
        c.decrement()
        self.assert_(c.get_count() == -1)
        c.decrement()
        self.assert_(c.get_count() == -2)


if __name__ == '__main__':
    unittest.main()

各テストの実行前と実行後には、setUp()tearDown() がそれぞれ呼び出されるようになっているので、ここに各テストの共通コードを記述しておくことができます。 上記の例では、共通コードはないので pass とだけ記述しています。

実行結果
$ python3 sample.py
..
--------------------------------------
Ran 2 tests in 0.000s

OK