我從來沒有寫過正確的測試,直到現在,只有小型程序,我會在測試成功後處置。我正在瀏覽Python的unittest
模塊和網絡教程,但有些東西對我來說並不明確。一個TestCase應該覆蓋多少?
一個TestCase
應該覆蓋多少?我在網上看到了只有一種方法的TestCase
類的例子,以及測試幾乎所有可用功能的類。
在我的情況下,我試圖編寫一個簡單的布隆過濾器測試。你認爲我應該組織我的測試用例嗎?
我從來沒有寫過正確的測試,直到現在,只有小型程序,我會在測試成功後處置。我正在瀏覽Python的unittest
模塊和網絡教程,但有些東西對我來說並不明確。一個TestCase應該覆蓋多少?
一個TestCase
應該覆蓋多少?我在網上看到了只有一種方法的TestCase
類的例子,以及測試幾乎所有可用功能的類。
在我的情況下,我試圖編寫一個簡單的布隆過濾器測試。你認爲我應該組織我的測試用例嗎?
說得簡單:一個單元測試應包括你的程序的單一特徵。這就是全部。這就是爲什麼他們被稱爲單元測試。
當然,我們所瞭解的功能可能會有所不同。想想你的程序中可能會破壞或不能按預期工作的最小部分。考慮你的代碼的業務需求。這些都是你想要的每個部分都由專用單元測試覆蓋。
通常,單元測試是小的,孤立的和原子的。他們應該是容易理解,他們應該失敗/通過彼此獨立,並且應該執行快速。正確的單元測試很好的指示是單一的斷言 - 如果你發現自己寫的更多,你可能測試得太多,這是一個跡象,你需要給定功能的多個測試。但是,這不是一個嚴格的規則 - 涉及的代碼越複雜,單元測試越複雜。
在編寫測試時,很容易分裂你的代碼的功能,並測試這些分離的部分(這應該給你測試原子的想法)。例如,如果您有一種方法,即驗證輸入,然後調用一項服務並最終返回結果,則通常需要覆蓋所有三個(驗證,調用,返回)步驟。
我會用幾種測試方法創建一個TestCase。布隆過濾器具有簡單的語義,所以只有一個TestCase。我通常爲每個功能添加一個TestCase。