7.2.1 代码测试 doctest

  Python标准库 doctest 可以搜索程序中类似于交互式Python代码的文本片段,并运行这些交互式代码来验证是否符合预期结果和功能,常用于Python程序的模块测试。

  使用doctest模块测试Python代码。

下面的代码演示了doctest模块的用法,定义了一个函数,预期功能为可对整数或实数相加,或连接两个字符串、列表、元组,或对两个集合求并集,并返回结果。

 1 def add(value1,value2):
 2     #下面三个引号之间是测试代码,doctest会搜索这些代码并执行
 3     #并且根据执行结果与预期结果匹配程度来测试代码是否正确
 4     '''
 5     return the addition of two numbers or the concatenation of two string/list/tuple
 6     >>> add(3,5)
 7     8
 8     >>> add(3.0,5.0)
 9     8.0
10     >>> add([1,2],[3,4])
11     [1,2,3,4]
12     >>> add((1,),(2,3,4))
13     (1,2,3,4)
14     >>> add(1,[3])
15     TypeError
16     >>> add(1,'2')
17     TypeError
18     >>> add([1],(2))
19     TypeError
20     >>> add('1234',[1,2,3,4])
21     TypeError
22     >>> add({1,2,3},{3,4,5})
23     {1,2,3,4,5}
24     >>> add({1:1},{2:2})
25     TypeError
26     '''
27 
28     #下面是正式的功能代码
29     if type(value1) not in (int,float,str,list,tuple,set):
30         raise TypeError('value1 and value2 must be the type of int,float,str,list,tuple,or set')
31 
32     if type(value1) != type(value2):
33         raise TypeError('value1 and value2 must be of the same type')
34 
35     if type(value1) == set:
36         return value1 | value2
37     else:
38         return value1 + value2
39 
40 if __name__ == '__main__':
41     import doctest
42     doctest.testmod()
43     print(add(3,5))        

把上面的代码保存成Python程序文件doctest_demo.py,在IDLE中直接运行,如果函数功能完全符合预期功能要求就会输出正确的结果,如果有不符合预期结果的代码就会给出相应的提示。在命令行提示符环境中使用-v参数的方式执行,可以看到详细的测试过程。

原文地址:https://www.cnblogs.com/avention/p/8825158.html