我最近遇到了一個簡單但討厭的錯誤。 我有一個列表,我想找到它中最小的成員。我使用Python的內置min()。 一切工作很好,直到在一些奇怪的情況下列表是空的(由於奇怪的用戶輸入,我不能預料)。我的應用程序崩潰了ValueError(順便說一句 - 沒有在官方文檔中記錄)。Python在覆蓋失敗時對異常進行預測試
我有非常廣泛的單元測試,我經常檢查覆蓋範圍,以避免這樣的驚喜。我也使用Pylint(所有東西都集成在PyDev中),我從不忽略警告,但是在我的用戶之前我沒有發現這個錯誤。
有沒有什麼我可以改變在我的方法避免這些類型的運行時錯誤? (這在編譯時會被Java/C#捕獲?)。
我正在尋找一些東西,而不是用大的嘗試來包裝我的代碼。我還可以做些什麼?有多少其他的Python函數構建隱藏這樣的令人討厭的驚喜?
要澄清一點:我不認爲最小/最大應該返回None或0.在這種情況下,他們提出異常是有道理的。我只是擔心我只是通過我的sw發現了一條隱藏的路線,我並不知道也沒有測試過......而且代碼與用戶遠離:這是一個自然語言旅行請求我提取所有數據。在某些時候,我試圖從文本中找到100公里半徑範圍內最大的城市,但是用戶進入了澳大利亞的一個機場,並在其旁邊有0個城市......我的不好,當然...... – 2010-04-15 20:59:59
潛在答案:如果我沒有將它傳遞給空列表導致它引發異常,請改進覆蓋率以顯示此行的部分覆蓋範圍!這樣它會在覆蓋報告中彈出,我會寫一個測試來覆蓋它。這是可行的嗎? – 2010-04-16 06:07:27