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),我們將立即處理

評 論

論壇新帖

頂部 底部


建議使用IE 6.0以上瀏覽器,800×600以上分辨率,法律顧問:上海瀛東律師事務所 張楠律師
版權所有 上海博為峰軟件技術股份有限公司 Copyright©51testing.com 2003-2020, 滬ICP備05003035號
投訴及意見反饋:webmaster@51testing.com; 業務聯系:service@51testing.com 021-64471599-8017

滬公網安備 31010102002173號

51Testing官方微信

51Testing官方微博

掃一掃 測試知識全知道

日本av