kidoraの日記

Kia Ora! プログラマだけどハード好き!

PythonでTDD

PythonでもTDDを導入してみたいので、簡単なソースでお試ししてみる。
使っているのはPython2.7なんだけど、標準ライブラリにunittestというのがあるらしい。
でも最近は nose というのが使われているらしいので乗っかってみる。

nose のインストール

$ easy_install nose
Searching for nose
Reading https://pypi.python.org/simple/nose/
Best match: nose 1.3.4
Downloading https://pypi.python.org/packages/source/n/nose/nose-1.3.4.tar.gz#md5=6ed7169887580ddc9a8e16048d38274d
Processing nose-1.3.4.tar.gz
Writing /var/folders/5q/j2ypq41j30v1zm_s7kq9t6n40000gp/T/easy_install-yqYb1G/nose-1.3.4/setup.cfg
Running nose-1.3.4/setup.py -q bdist_egg --dist-dir /var/folders/5q/j2ypq41j30v1zm_s7kq9t6n40000gp/T/easy_install-yqYb1G/nose-1.3.4/egg-dist-tmp-Lw0Yc5
no previously-included directories found matching 'doc/.build'
Adding nose 1.3.4 to easy-install.pth file
Installing nosetests script to /usr/local/bin
Installing nosetests-2.7 script to /usr/local/bin

Installed /usr/local/lib/python2.7/site-packages/nose-1.3.4-py2.7.egg
Processing dependencies for nose
Finished processing dependencies for nose

簡単^ ^準備完了?ちゃんと動くんかな

テストケースを書いてみる

Python nose でユニットテストを書いてみた / 桃缶食べたい。 こちらを参考にさせていただき、書いてみた。
myfunc.py

# -*- coding: utf-8 -*-

def add(num1, num2):
    return num1 + num2

test/test.py

# -*- coding: utf-8 -*-

from myfunc import add

class TestAdd(object):

    def setup(self):
        pass

    def teardown(self):
        pass

    def test_add_nums(self):
        assert add(1, 10) == 11

実行

$ nosetests -v
test.TestAdd.test_add_nums ... ok

----------------------------------------------------------------------
Ran 1 test in 0.003s

OK

OK!!