doctestを知った

Djangoのマニュアルを眺めていて、テストの項があったので読んでみたら"doctest"なるものの存在を知りました。
5.2 doctest -- 対話モードを使った使用例の内容をテストする

doctestはunittest同様、Pythonの標準モジュールです。unittestはその名の通り、単体テスト用のツール。テストケースとなるクラスを書きます。一方、doctestもその名の通り、docstring中にテストコードを書きます。

"""
example.
 
>>> a_plus_b(1,2)
3
>>> a_plus_b(2,3)
5
>>> a_plus_b(3,4)
7
"""
def a_plus_b(a, b):
    """
    return a + b
 
    >>> a_plus_b(10, 20)
    30
    >>> a_plus_b(100, 200)
    300
    >>> a_plus_b(1000, 2000)
    3000
    """
    return a + b
 
def _test():
    import doctest
    doctest.testmod()
 
if __name__ == '__main__':
    _test()
 
$ python sample_doctest.py
$ python sample_doctest.py -v
Trying:
    a_plus_b(1,2)
Expecting:
    3
ok
Trying:
    a_plus_b(2,3)
Expecting:
    5
ok
Trying:
    a_plus_b(3,4)
Expecting:
    7
ok
Trying:
    a_plus_b(10, 20)
Expecting:
    30
ok
Trying:
    a_plus_b(100, 200)
Expecting:
    300
ok
Trying:
    a_plus_b(1000, 2000)
Expecting:
    3000
ok
1 items had no tests:
    __main__._test
2 items passed all tests:
   3 tests in __main__
   3 tests in __main__.a_plus_b
6 tests in 3 items.
6 passed and 0 failed.
Test passed.

テストと言えば単体テストでxUnitしか考えていませんでしたが、こういう仕組みというかやり方もあるんですね。

プロフィール

このブログ記事について

このページは、koshigoeが2007年4月27日 01:02に書いたブログ記事です。

ひとつ前のブログ記事は「pythonutils.odict.OrederedDictいいかも」です。

次のブログ記事は「python2.4-examplesってのがあるんだね」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。