10.3 文档测试
Python内置的“文档测试”(doctest)模块可以直接提取注释中的代码并执行测试。
doctest严格按照Python交互式命令行的输入和输出来判断测试结果是否正确。
例如:10.2-doctest.py
# 文档测试闰年问题
def run(year):
"""
返回给定年份是否是闰年
>>> run(1987)
'平年'
>>> run(1984)
'闰年'
>>> run(1900)
'平年'
>>> run(2000)
'闰年'
"""
res = '平年'
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
res = '闰年'
return res
if __name__ == '__main__':
import doctest
doctest.testmod()
结果没有任何输出,说明测试结果正确。
如果改变其中的代码,例如将
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
改为:
if year % 4 == 0 and year % 100 != 0:
则闰年的判断有问题,输出为:
**********************************************************************
File "c:/Projects/kejian/python/code/ch10/10.2-doctest.py", line 11, in __main__.run
Failed example:
run(2000)
Expected:
'闰年'
Got:
'平年'
**********************************************************************
1 items had failures:
1 of 4 in __main__.run
***Test Failed*** 1 failures.
这次的测试有一个item执行失败,并给出预期结果与实际结果。(不同开发环境显示结果稍有不同。)