Doctest 通過解析文檔字符串(docstring)中的交互式 Python 代碼片段(以?>>>
開頭)進行測試,驗證代碼輸出是否與預期一致。測試用例直接嵌入代碼中,實現“文檔即測試”
核心語法:
def func():
? ? ?"""示例文檔字符串
? ? ?>>> func() 預期輸出
? ? ?"""
? ? ?pass
doctest非常有用,不但可以用來測試,還可以直接作為示例代碼。通過某些文檔生成工具,就可以自動把包含doctest的注釋提取出來。用戶看文檔的時候,同時也看到了doctest。
練習
對函數fact(n)
編寫doctest并執行:
def fact(n):'''Calculate 1*2*...*n>>> fact(1)1>>> fact(10)?>>> fact(-1)?'''if n < 1:raise ValueError()if n == 1:return 1return n * fact(n - 1)if __name__ == '__main__':import doctestdoctest.testmod()
這里呢所建文件夾不能是doctest.py,否則會因為自定義腳本與 Python 標準庫重名導致報錯