Unit Testing
在軟體開發中,「單元測試」(Unit Testing)是用來檢驗個別函式或模組是否正確的重要機制。Python 提供內建的 assert 關鍵字以及 unittest 測試框架來輔助開發者自動化測試流程。
一、assert:簡單斷言語句
assert:簡單斷言語句assert 是 Python 內建的關鍵字,用於快速檢查程式邏輯是否正確,條件為 False 時會拋出 AssertionError。
語法:
assert 條件, "錯誤訊息(可選)"範例:
def divide(x, y):
return x / y
assert divide(6, 2) == 3
assert divide(10, 5) == 2, "除法計算錯誤"適合用於簡單測試或原型開發階段的自我檢查。
二、unittest:結構化的測試框架
unittest:結構化的測試框架Python 標準函式庫中的 unittest 模組提供完整的單元測試支援,可定義測試類別與多個測試方法。
基本結構:
常用方法一覽:
方法名稱
說明
assertEqual(a, b)
驗證 a == b
assertNotEqual(a, b)
驗證 a != b
assertTrue(x)
驗證 bool(x) 為 True
assertFalse(x)
驗證 bool(x) 為 False
assertIs(a, b)
驗證 a is b
assertIsNone(x)
驗證 x is None
assertIn(a, b)
驗證 a in b
assertRaises()
測試是否拋出特定例外
三、進階應用技巧
測試前後動作:
模擬依賴(Mocking):
四、進階測試主題
Parameterizing Tests(參數化測試)
使用迴圈或外部資料批次測試多組輸入:
Test Fixtures(測試樣板)
setUp() 和 tearDown() 是常見樣板方法,在每個測試前後執行初始化與清理。
Skipping Tests(跳過測試)
可使用 @unittest.skip() 或在條件下使用 self.skipTest():
五、撰寫良好測試的原則
函數名稱以
test_開頭每個邏輯分支或邊界情況應有測試
單元測試應獨立,不依賴順序或外部狀態
測試資料固定、可重現(可配合
fixtures)
六、結語
單元測試與斷言是保障程式正確性與可維護性的基礎工具。小至 assert、大至完整的測試框架,都是提升開發品質不可或缺的工具。
Last updated