當前位置:
首頁 > 最新 > Python錯誤、調試和測試

Python錯誤、調試和測試

1.錯誤處理

Python內置了 的錯誤處理機制。

如果認為代碼可能出錯,用try運行代碼;如果代碼執行出錯,直接跳轉到except語句,except語句可以有多個;如果沒有錯誤,會執行else語句;如果有finally,則最後執行finally語句。如:

錯誤信息是一個調用棧,可以跟蹤錯誤信息。


2.logging列印

Python內置的logging模塊可以容易的記錄錯誤信息。

3.raise拋出錯誤

可以自己定義錯誤類型,然後通過 語句拋出錯誤的實例。


簡單的辦法是通過print()列印錯誤信息,還有一種是使用斷言(assert)。凡是可以用print的地方都可以都可以使用斷言。

啟動Python解釋器時可以用-O(字母O)參數來關閉assert:

前面說的logging其實可以更加強力,它允許指定記錄信息的級別。信息有debug,info,warning,error等幾個級別。比如:

當指定level為info時,debug就不起作用了;指定為warning時,debug和info就不起作用了。

pdb是另一種調試方法,它是Python的調試器,讓程序以單步的方式運行。當然通過IDE進行單步調試是最好的。

通過使用Python自帶的unittest模塊,可以進行單元測試。編寫一個類繼承unittest.TestCase。

上面的Dict類的單元測試可以寫為:

以test開頭的方法就是測試方法,不以test開頭的方法不被認為是測試方法,測試的時候不會被執行。對每一類測試都需要編寫一個test_xxx()方法。

單元測試中提供了很多內置的條件判斷。通過調用這些方法就可以斷言輸出是否是期望的。

單元測試的運行可以在後面加上:

將Python作為一個正常的腳本運行。或者通過命令行參數運行。

當然用直接用IDE也是可以的。

單元測試有兩個特殊的方法, 和 方法,這兩個方法會分別在每調用一個測試方法的前後分別被執行。

setUp()和tearDown()方法有什麼用呢?設想你的測試需要啟動一個資料庫,這時,就可以在setUp()方法中連接資料庫,在tearDown()方法中關閉資料庫,這樣,不必在每個測試方法中重複相同的代碼。


Python內置的「文檔測試」(doctest)模塊可以直接提取注釋中的代碼並執行測試。

doctest嚴格按照Python互動式命令行的輸入和輸出來判斷測試結果是否正確。只有測試異常的時候,可以用...表示中間一大段的輸出。

運行時什麼輸出都沒有,這時正常的。但是如果代碼有錯誤,比如沒有getattr方法,文檔測試就會出錯。

看最後兩行代碼,當模塊正常導入時,doctest不會被執行。只有在命令行直接運行時,才執行doctest。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

Python數據預處理:使用Dask和Numba並行化加速

TAG:Python |