Pytest—doctest模块下的文档测试,你了解多少?

发表于:2020-11-16 10:11

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:昨日不可追    来源:博客园

  doctest 模块寻找像Python交互式代码的文本,然后执行这些代码来确保它们的确就像展示的那样正确运行,类似于单元测试
  doctest测试用例放在两个地方:
  1、函数或者方法下的注释里面
  2、模块的开头
  它可以用来测试代码,以测试该函数、类、类方法的功能是否正确。
  在函数、类或方法的说明性文档中,以>>>作为开始的内容表示一行测试代码,并且接下来的一行则明确该测试代码的输出结果。
  代码参考如下:
   # content of test_doctest.py
   def something():
       """ a doctest in a docstring
       >>> something()
       42
       """
       return 42
   
   def num(n):
      """
      function:斐波那契数列
      >>> num(5)
      [0, 1, 1, 2, 3]
      """
      titles = []
      a = 0
      b = 1
      for i in range(n):
          titles.append(a)
          a, b = b, a+b
  
      return titles
  
  
  if __name__ == '__main__':
      import doctest
      doctest.testmod(verbose=True)
  结果:
C:\Users\Administrator\PycharmProjects\untitled2\venv\Scripts\python.exe C:/Users/Administrator/PycharmProjects/untitled2/forpytest/test_doctest.py
   Trying:
       num(5)
   Expecting:
       [0, 1, 1, 2, 3]
   ok
   Trying:
       something()
   Expecting:
      42
  ok
  1 items had no tests:
      __main__
  2 items passed all tests:
     1 tests in __main__.num
     1 tests in __main__.something
  2 tests in 3 items.
  2 passed and 0 failed.
  Test passed.
 
  Process finished with exit code 0
  在执行 doctest.testmod() 函数时,它会执行该模块中各成员说明性文档包含的测试代码,并将执行结果和指定的结果做比对,如果一致,则什么也不输出;反之,则输出以下提示信息:
  1. 显示在哪个源文件的哪一行。
  2. Failed example,显示是哪个测试用例出错了。
  3. Expected,显示程序期望的输出结果。也就是在“>>>命令”的下一行给出的运行结果,它就是期望结果。
  4. Got,显示程序实际运行产生的输出结果。只有当实际运行产生的输出结果与期望结果一致时,才表明该测试用例通过。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号