doctest非常有用,不但可以用来测试,还可以直接作为示例代码。通过某些文档生成工具,就可以自动把包含doctest的注释提取出来。用户看文档的时候,同时也看到了doctest。
例:
def fact(n):
'''
>>> fact(1) #注意:>>>后面有一个空格
1
>>> fact(0)
Traceback (most recent call last):
...
ValueError
>>> fact(10)
3628800
'''
if n<1:
raise ValueError()
if n ==1:
return 1
return n*fact(n-1)
if __name__ == '__main__':
import doctest #引入doctest测试模块
doctest.testmod() #调用doctest测试模块
注意到最后3行代码。当模块正常导入时,doctest不会被执行。只有在命令行直接运行时,才执行doctest。所以,不必担心doctest会在非测试环境下执行。
网友评论