測試代碼放在兩個地方纔有效果,一個是模塊開頭,一個是函數聲明語句的下一行 doctest 的概念模型 在python的官方文檔中,對doctest是這樣介紹的: doctest模塊會搜索那些看起來像是python互動式會話中的代碼片段,然後嘗試執行並驗證結果。 從名字上是否會讓你聯想到docstri... ...
測試代碼放在兩個地方纔有效果,一個是模塊開頭,一個是函數聲明語句的下一行
doctest 的概念模型
在python的官方文檔中,對doctest是這樣介紹的:
doctest模塊會搜索那些看起來像是python互動式會話中的代碼片段,然後嘗試執行並驗證結果。
從名字上是否會讓你聯想到docstring呢?
doctest的編寫過程就像你在一個互動式shell中導入了一個被測試模塊,然後一條一條執行被測試模塊裡面的函數一樣。其實實際上doctest也是這麼編寫的,寫好一個模塊之後,在shell中測試這個模塊裡面的函數,將shell會話中的內容複製粘貼成doctest用例。
測試代碼驗證:unnecessary_math.py
'''這個例子展示如何在源碼中嵌入doctest用例。'>>>' 開頭的行就是doctest測試用例。不帶 '>>>' 的行就是測試用例的輸出。如果實際運行的結果與期望的結果不一致,就標記為測試失敗。'''def multiply(a, b):
""">>> multiply(4, 3)12>>> multiply('a', 3)'aaa'"""return a * b
if __name__=='__main__':import doctest
doctest.testmod(verbose=True)
然後在命令行中定位到文件所在目錄,運行python -m doctest -v unnecessary_math.py即可。
其中參數-v表示列印細節,去除後如果沒有發現錯誤,則什麼都不顯示
測試結果如下: