1. 程式人生 > >python測試標準庫doctest

python測試標準庫doctest

org pytho -m cte library blog rar docstring 就是

引言:

doctest是python的一個測試用標準庫。這個庫用來模擬控制臺對話來檢測值是否正確。

顧名思義,這個模塊就是尋找程序裏面像python交互式解釋器的部分,然後運行這部分和提供的結果進行比較,來判斷實際運行結果和你希望的結果是否一致。

基本使用:

1.通過Docstrings測試

我們先創建一個example.py,代碼如下

 1 ‘‘‘
 2 docstrings可以放的位置1
 3
 4 >>> sum(1, 3)
 5 4
 6 
 7 ‘‘‘
 8 
 9 
10 def sum(a, b):
11     ‘‘‘
12     docstrings可以放的位置2
13 >>> sum(3, 5) 14 8 15 16 >>> sum(‘a‘, ‘c‘) 17 ‘ac‘ 18 ‘‘‘ 19 return a + b 20 21 if __name__ == "__main__": 22 import doctest 23 doctest.testmod()

然後我們在控制臺執行命令python example.py -v,則會輸出測試的結果如下

$ python example.py -v
Trying:
    sum(1, 3)
Expecting:
    4
ok
Trying:
    sum(3, 5)
Expecting:
    8
ok
Trying:
    sum(‘a‘, ‘c‘)
Expecting:
    ‘ac‘
ok
2 items passed all tests:
   1 tests in __main__
   2 tests in __main__.sum
3 tests in 2 items.
3 passed and 0 failed.
Test passed.

註意,在樣例全部通過,沒有failed的情況下,“python example.py”是不會輸出任何東西的,需要加參數-v打印所有的測試樣例。我們可以把examp.py的第5行換成錯誤的結果99,在執行“python example.py”,那麽會顯示沒有通過的樣例,如下。

$ python example.py
**********************************************************************
File "example.py", line 4, in __main__
Failed example:
    sum(1, 3)
Expected:
    
99 Got: 4 ********************************************************************** 1 items had failures: 1 of 1 in __main__ ***Test Failed*** 1 failures.

還有一點要註意的是,文檔註釋裏面的

>>> sum(1, 3)

">>>"後面記得跟一個空格

我們再看一下

if __name__ == "__main__":
    import doctest
    doctest.testmod()

如果你不想在__main__中執行testmod(),也可以不寫,執行python -m doctest -v example.py也行。

2.通過Test File測試

我們新建一個文本文件example.txt,裏面寫入

>>> from example import sum
>>> sum(2, 3)
5

然後在example.py中替換testmod()函數為testfile()

import doctest
doctest.testfile("example.txt")

然後和1一樣,運行python example.py -v

同樣的,如果你不想在example.py中運行testfile(),你也可以用如下命令

python -m doctest -v example.txt

參考資料:

Python官方文檔: https://docs.python.org/3/library/doctest.html

《流暢的Python》

\Python36\Lib\test\test_doctest.py

python測試標準庫doctest