pytest 9 正式版解析:移除 nose 相容層的保守但必要大掃除

作者:默思編輯部 發布:2026-05-28

一次刻意保守的大版號升級

pytest 9 這次的大版號升級,設計上相當克制——目標不是重新發明測試框架,而是清理長年累積、早已被標記為棄用(deprecated)的舊有介面。開發者日常依賴的 fixture、參數化(parametrization)、標記(marker)、conftest 分層機制,這些核心功能完全沒有變動。實際改動集中在移除 nose 風格的 hook(早期 Python 測試框架 nose 的相容層)、拿掉 pytest.collect 命名空間,以及確保執行環境符合新的 Python 最低版本要求。

目前的版本現況

截至 2026 年 6 月,最新版本是 9.1.1;9.0 於 2025 年 11 月發布,9.0.2 修補版本則在 2026 年 4 月跟進釋出,屬於典型的成熟專案穩定迭代節奏。

幾項實用的新功能

雖然這次升級整體偏向清理而非擴充,仍加入了幾項實用的新選項:

為什麼「清理」本身值得關注

對於一個被業界廣泛依賴超過十年的測試框架而言,「移除過時相容層」聽起來不性感,卻是維持長期程式碼健康度的必要工程——如果每次大版號升級都只加新功能、不清理舊包袱,最終會導致核心程式碼庫愈來愈難維護,新功能開發的邊際成本也會愈來愈高。

對開發者的實務建議

如果你的專案還在使用被這次移除的 nose 風格 hook 或 pytest.collect 命名空間,升級到 pytest 9 前務必先檢查相依的外掛程式(尤其是一些歷史悠久、疏於維護的外掛)是否已經跟進更新,避免升級後測試套件突然無法執行。