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.