PythonのDocTestでお手軽TDD¶
PythonのDocTestで手軽にUnitTestを書く事が出来ます。こいつの 凄い ところは、
- 実装とドキュメントとテストが一カ所に集中する(生き別れない) 
- テストコードが言語レベルでマニュアルとして利用される 
- インタラクティブモード(対話コンソール)の内容を貼り付ければテストになる 
というところです。まああんまり書きすぎると実装がドキュメント(UnitTest)に埋もれちゃう、という話もありますが、そのへんはバランスを取って書くということで。
それでは早速DocTestを書いてみます。(vnc2swf - 画面録画ユーティリティ を使ってFlash作ってみました)
コードだけだと分からないと思うので、使い方等、詳しくはFlashの方を見てください。
def add(x, y):
    """ return added value.
    add digits.
    >>> add(1, 2)
    3
    add strings.
    >>> add('abc', '123')
    'abc123'
    """
    return x + y
def evens(digits):
    """ return even value's list.
    >>> evens([1, 2, 3, 4, 5, 6])
    [2, 4, 6]
    >>> evens([1, 3])
    []
    >>> evens(range(0, 10))
    [0, 2, 4, 6, 8]
    """
    return [x for x in digits if x%2==0]
# make and return TestSuite for this module.
def test_suite():
    import unittest
    from doctest import DocTestSuite
    return unittest.TestSuite(( # make test suite
        DocTestSuite('my_utils'), # register myself as test
        ))
# This if statement is executed only when run this module as main module.
if __name__ == '__main__':
    import unittest
    unittest.main(defaultTest='test_suite') # execute test.
