Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

Python3標準添付のunittestで・テスト書きながら実装する

ここのところ使い捨てのスクリプトばっかりやっていて感覚が鈍ってきたので、
新規プロジェクトはリアルに数年ぶりにTDD的方法でやろうと思い立ちました。
幸い、今回使うツールであるPython3はかなりしっかりしたテスト ライブラリ"unittest"がついてます。

実際のところ

こんな構成

$ tree
.
├── mymodule.py
└── test_module.py

mymodule.py

class MyModule(object):
  def __init__(self, reg_h, reg_l):
    self._reg_h = reg_h
    self._reg_l = reg_l

  def show_regs(self):
    return (self._reg_h, self._reg_l)


  def decrease_h(self):
    self._reg_h -= 1
    return (self._reg_h)

test_module.py

import unittest
import mymodule
 
class TestModule(unittest.TestCase):

    def setUp(self):
        print('\nsetUp')
        self._mymodule = mymodule.MyModule(8, 1)

    def test_degrease(self):
        self.assertEqual(7, self._mymodule.decrease_h())

    def test_degrease_after(self):
        self._mymodule.decrease_h()
        self.assertEqual((7,1), self._mymodule.show_regs())


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

動かしてみる

$ python test_module.py 

setUp
.
setUp
.
----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK