Friday, October 1, 2010

doctest

自动的测试 doc 里面的例子。这是 ref 里面的例子:
#!/usr/bin/env python

'''
>>> factorial(5)
120
'''

def factorial( n ):
    '''return the factorial of n
    >>> factorial( 3 )
    6
    '''
    if n <= 1: return 1
    else:
        return n * factorial(n - 1)

if __name__ == '__main__':
    import doctest
    doctest.testmod()
之后可以
$ ./test04.py -v
Trying:
    factorial(5)
Expecting:
    120
ok
Trying:
    factorial( 3 )
Expecting:
    6
ok
2 items passed all tests:
   1 tests in __main__
   1 tests in __main__.factorial
2 tests in 2 items.
2 passed and 0 failed.
Test passed.
非常方便的 unit test 工具。另外可以写一个无关的文本文件,如 README 之类的介绍如何使用这个 module,里面的例子也可以作为测试,这只需要 doctest.testfile() 指定文件即可。测试还可以包括出现错误的情况,doctest 也能发现抛出的 exception 是否匹配。

doctest 是基于 unittest 做的,本质上就是从文件或者文档中抽取例子。后面我们将具体看看 unittest 提供给我们一些什么样的功能。

No comments:

Post a Comment