Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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