doctest在docstring的部分加入測試代碼,以一種簡單的方式進行測試。
示例代碼:
#dtest.py import doctest def add(x, y): """ >>> add(1, 2) 3 """ return x + y def main(): pass if __name__ == '__main__': main()
運行python -m doctest -v dtest.py
如果doctest通過,不會有任何輸出。可以加-v參數來查看測試細節。
注意的地方
1.">>>"與測試代碼之間有個空格。
2.期望的測試結果與docstring之間要有一個空行。
""" >>> add(1, 2) 3 a docstring #這個會被認爲是測試輸出的一部分 """
應該寫成這樣
""" >>> add(1, 2) 3 a docstring """
作用
官方文檔提到的應用情景:
1.通過驗證例子(doctest)檢查模塊的docstring是最新的。
有時候會出現代碼已經改變但docstring沒有更新的情況,在docstring中加入doctest可以儘量避免這種情況的發生。
2.迴歸測試
我的理解是當測試未通過的時候,可以把用例寫在docstring裏,可以方便的進行迴歸測試。
3.作爲包或庫的教程示例
一個可以執行的示例比大段的說明性文字更直觀有效
相比於unittest模塊,doctest功能比較簡單,可以很輕鬆的拿來用,是大型測試框架的有機補充。
參考
[1] http://docs.python.org/release/2.6.8/library/doctest.html
[2] http://www.doughellmann.com/PyMOTW/doctest/