python-testing-patterns
編寫更好的 Python 測試
也可從以下取得: ActiveInferenceInstitute,wshobson
編寫可維護的測試具有挑戰性。此技能提供全面的 pytest 模式,包括 fixtures、mocking、參數化和 TDD 工作流程,幫助您建立可靠的測試套件。
下載技能 ZIP
在 Claude 中上傳
前往 設定 → 功能 → 技能 → 上傳技能
開啟並開始使用
測試它
正在使用「python-testing-patterns」。 為 calculate_discount 函數編寫測試,該函數接受 price 和 discount_percentage,返回折扣後價格
預期結果:
基本測試檔案,包含多個測試案例,涵蓋正常折扣、零折扣和無效輸入
正在使用「python-testing-patterns」。 建立具有 session 作用域的資料庫連線測試 fixtures
預期結果:
具有適當 yield/teardown 模式的 fixture 設定,用於資料庫資源管理
正在使用「python-testing-patterns」。 模擬 API 用戶端的 HTTP 請求以取得使用者資料
預期結果:
使用 patch() 模擬 requests.get 的測試,包含不同的回應情境
安全審計
安全All 87 static findings are false positives. The detected patterns (external_commands, network, env_access) are documentation examples of pytest commands, HTTP mocking patterns, and test fixture configurations - all legitimate testing education content. No actual security threats present.
風險因素
⚙️ 外部命令 (1)
🌐 網路存取 (1)
🔑 環境變數 (1)
偵測到的模式
品質評分
你能建構什麼
新 Python 專案測試設定
為新 Python 專案建立完整的測試套件,包含 fixtures、conftest.py 設定和 CI/CD 整合
舊程式碼測試涵蓋
使用 mocking 隔離單元並使用參數化涵蓋邊界情況,為現有未測試的程式碼新增測試
API 整合測試
使用 fixtures 建立測試資料並使用 mocking 處理外部服務呼叫,為 REST APIs 編寫整合測試
試試這些提示
為名為 [FUNCTION_NAME] 的函數建立 pytest 測試,該函數 [DESCRIPTION]。使用 AAA 模式。
建立具有 [SCOPE] 作用域的 pytest fixtures 以提供 [RESOURCE] 給測試。包含適當的設定和清理。
編寫使用 unittest.mock 模擬 [EXTERNAL_SERVICE] 呼叫的測試。展示 patch 裝飾器和上下文管理器兩種方法。
使用 pytest.mark.parametrize 為 [FUNCTION] 建立參數化測試以測試 [EDGE_CASES]。
最佳實務
- 使用描述性的測試名稱,說明正在測試的內容和預期行為
- 保持測試獨立並具有適當的設定/清理 - 測試之間不共享狀態
- 遵循 AAA 模式:Arrange (設定)、Act (執行)、Assert (驗證) 清楚分離
避免
- 避免使用 test_1 或 test_function 等未描述測試目的的測試名稱
- 當多個斷言可以分為單獨測試時,不要將它們混合在一個測試中
- 避免測試實作細節而非行為 - 測試程式碼做什麼,而非如何做