def big(i,j):
'''
doctest:
>>> big(12,13)
13
'''
return i if i > j else j
if __name__ == '__main__':
import doctest
doctest.testmod()
$python test.py -v
Trying:
big(12,13)
Expecting:
13
ok
1 items had no tests:
__main__
1 items passed all tests:
1 tests in __main__.big
1 tests in 2 items.
1 passed and 0 failed.
Test passed.
在函数下面定义了注释.使用交互式提示符 >>>。在后面写上python语句.就好像是从交互式shell里
拷贝粘贴的一样.然后在下面写出预期的输出. 比如调用big(12,13) 函数返回13。然后通过命令行调用。
就能完成一次单元测试。
对类的测试也差不多.测试代码如下
#coding:utf-8
class Bird:
"""
doctest:
>>> bird = Bird('kula')
>>> bird.song()
'kula'
"""
def __init__(self,name):
self.name = name
def song(self):
return self.name
if __name__ == '__main__':
import doctest
doctest.testmod()
$python test.py -v
Trying:
bird = Bird('kula')
Expecting nothing
ok
Trying:
bird.song()
Expecting:
'kula'
ok
3 items had no tests:
__main__
__main__.Bird.__init__
__main__.Bird.song
1 items passed all tests:
2 tests in __main__.Bird
2 tests in 4 items.
2 passed and 0 failed.
Test passed.
由此完成了对这个类的单元测试.同时注释里留下的单元测试教会了我们怎么使用这个类和函数.一举多得!
文档在代码里.每次查阅还要翻代码.也不方便.怎么办?
java里 有一个javadoc模块.可以自动从注释生成文档. python也有类似的模块.有一个模块叫epydoc。
能够根据注释生成非常详尽的文档.
只需要
$epydoc --html test.py
就能在目录下生成一份精美的html文档!
同时,epydoc有很多有用的标签.如 @type @rtype @param @return 等等.善于利用能制作出非常
漂亮的文档
分享到:


2010-04-08 13:27
浏览 2035
评论
|