總結
在本單元中,你探索了 pytest 功能,幫助你撰寫更具表達力且易於維護的測試。 你曾使用 @pytest.mark.parametrize 執行同一個測試函式,並輸入多個值。 Pytest 將每個參數集收集為獨立的測試案例,因此報告能精確識別哪些輸入通過或失敗。
您也會使用 fixture。 Fixture 提供可重複使用的設定程式碼,透過函式引數明確測試相依性,並可用 yield 為基礎來清理和使用適當 fixture 範圍來管理清除工作。 您透過撰寫參數化測試運用這些想法,並且來自 xUnit 樣式 setup_method() 和 teardown_method() 方法的類別型測試重構為使用 pytest 的 tmp_path fixture 暫時處理檔案的自訂 fixture 。 您也檢視了內建 fixture ,包括 tmp_path,其可為每次測試函式呼叫提供 pathlib.Path 暫存目錄,以及 monkeypatch,其可暫時變更屬性、字典值、環境變數、sys.path,或目前工作目錄,並在要求測試或固件結束後還原這些變更。
您現在可以:
- 使用參數化來涵蓋多個輸入,避免重複測試函數。
- 讀取 pytest 輸出來診斷哪些參數值通過或失敗。
- 建立自訂燈具以共享設置與清理邏輯。
- 選擇 fixture 範圍時,請依據執行頻率以及清除進行的時間點來決定。
- 將共用 fixture 放置在
conftest.py,使得同一目錄及其子目錄中的測試可以無需明確匯入即可要求。 - 使用內建 fixture ,包括用於暫存檔案的
tmp_path和用於範圍狀態變更的的monkeypatch,以隔離依賴檔案、環境變數、匯入或外部狀態的測試。
欲了解更多資訊,請參閱 pytest 文件,涵蓋 參數化測試、 夾具、 內建夾具、 暫存目錄與檔案、 xUnit 風格設定,以及 monkeypatch。