Python模塊——doctest

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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章