如果你经常阅读的Python的官方文档,可以看到很多文档都有示例代码比如,重模块就带了很多最示例代码:
>>> import re
>>> m = re.search('(?<=abc)def', 'abcdef')
>>> m.group(0)
'def'
可以把这些示例代码在Python中的交互式环境下输入并执行,结果与文档中的示例代码显示的一致。
这些代码与其他说明可以写在注释中,然后,由一些工具来自动生成文档。既然这些代码本身就可以粘贴出来直接运行,那么,可不可以自动执行写在注释中的这些代码呢?
答案是肯定的。
当我们编写注释时,如果写上这样的注释:
def abs(n):
'''
Function to get absolute value of number.
Example:
>>> abs(1)
1
>>> abs(-1)
1
>>> abs(0)
0
'''
return n if n >= 0 else (-n)
无疑更明确地告诉函数的调用者该函数的期望输入和输出。
并且,Python的内置的“文档测试”(文档测试)模块可以直接提取注释中的代码并执行测试。
文档测试严格按照Python的交互式命令行的输入和输出来判断测试结果是否正确。只有测试异常的时候,用可以...
表示中间一大段烦人的输出。
让我们用文档测试测试来上次关系编写的Dict
类:
运行python mydict2.py
:
$ python mydict2.py
什么输出也没有这说明我们编写的文档测试运行都是正确的如果程序有问题,比如把。__getattr__()
方法注释掉,再运行就会报错: