Python利用doctest模块进行文档测试

  

Python利用doctest模块进行文档测试?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

所谓文档测试,指的是通过doctest模块运行Python源文件的说明文档中的测试用例,从而生成测试报告。

前面在查看Python的模块文档时,经常会看到如下信息:

在祝辞祝辞os.path.commonprefix  ((& # 39;/usr/lib # 39;, & # 39;/usr/地方/lib # 39;])   & # 39;/usr/1 & # 39;   祝辞祝辞祝辞os.path.commonpath ([& # 39;/usr/lib # 39;,, & # 39;/usr/地方/lib # 39;])   & # 39;/usr # 39;

用户完全可以将这些代码拷贝到Python的交互式解释器中运行,然后可以看到运行结果与文档中示例代码的输出结果完全一致。

上面的说明就是文档测试的注释,文档测试工具可以提取说明文档中的测试用例,其中,祝辞的在祝辞”之后的内容表示测试用例,接下来的一行则代表该测试用例的输出结果。文档测试工具会判断测试用例的运行结果与输出结果是否一致,如果不一致就会显示错误信息。

现在定义一个简单的模块,该模块包含一个函数和一个类,程序为该函数和该类提供了说明文档,该文档中包含了测试用例。程序代码如下:

def  square  (x):   ,,,& # 39;& # 39;& # 39;   ,,,一个用于计算平方的函数      ,,,例如   ,,,的在祝辞祝辞,广场(2)   ,,,4   ,,,的在祝辞祝辞,广场(3)   ,,,9   ,,,的在祝辞祝辞,广场(3)   ,,,9   ,,,的在祝辞祝辞,广场(0)   ,,,0   ,,,& # 39;& # 39;& # 39;   ,,,return  x  *, 2, #,①,故意写错的      class 用户:   ,,,& # 39;& # 39;& # 39;   ,,,定义一个代表用户的类,该类包含如下两个属性:   ,,,name 作用;代表用户的名字   ,,,age 作用;代表用户的年龄      ,,,例如   ,,,的在祝辞祝辞,u =,用户(& # 39;fkjava& # 39;,, 9)   ,,,的在祝辞祝辞u.name   ,,,& # 39;fkjava& # 39;   ,,,的在祝辞祝辞u.age   ,,,9   ,,,的在祝辞祝辞,u.say(& # 39;小姐:love  python # 39;)   ,,,& # 39;fkjava说:,小姐:love  python # 39;   ,,,& # 39;& # 39;& # 39;   ,,,def  __init__(自我,,名字,,年龄):   ,,,,,,,self.name =, & # 39; fkit& # 39;, #,②,故意写错的   ,,,,,,,self.age =,年龄   ,,,def 说(自我,,内容):   ,,,,,,,return  self.name  +, & # 39;说:,& # 39;+,内容   if  __name__==& # 39; __main__ # 39;:   ,,,import  doctest   testmod (,,,)

上面第一段注释代码就是程序为广场()函数提供的测试用例,在文档中一共为该函数提供了4个测试用例;第二段注释代码是程序类为用户提供的测试用例,在文档中一共为该类提供了3个测试用例,分别用于测试用户的名字,年龄和表示()方法。

程序最后几行代码进行了判断,如果是直接使用python命令来运行该程序(__name__等于__main__),程序将导入doctest模块,并调用该模块的testmod()函数。

从上面程序可以看的到,python为文档测试提供了doctest模块,该模块的用法非常简单,程序只要调用该模块的testmod()函数即可。

运行上面程序,可以看到如下输出结果:

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   File “C: \用户桌面\ \ mengma \ 1. py",, line  25日__main__.User拷贝   Failed 例如:   ,,u.name   预期:   ,,,& # 39;fkjava& # 39;   有:   ,,,& # 39;fkit& # 39;   **********************************************************************   File “C: \用户桌面\ \ mengma \ 1. py",, line  29日__main__.User拷贝   Failed 例如:   ,,,u.say(& # 39;小姐:love  python # 39;)   预期:   ,,,& # 39;fkjava说:,小姐:love  python # 39;   有:   ,,,& # 39;fkit说:,小姐:love  python # 39;   **********************************************************************   File “C: \用户桌面\ \ mengma \ 1. py",, line  8 __main__.square拷贝   Failed 例如:   ,,,广场(3)   预期:   ,,,9   有:   ,,,6   **********************************************************************   File “C: \用户桌面\ \ mengma \ 1. py",, line  10 __main__.square拷贝   Failed 例如:   ,,,广场(3)   预期:   ,,,9   有:   ,,,6   **********************************************************************   2,items  had 故障:   ,,,2,of ,, 4, __main__.User拷贝   ,,,2,of ,, 4, __main__.square拷贝   * * * * * * Test 失败,4,失败。null

Python利用doctest模块进行文档测试