跳轉至

建立 2026-09-08 更新 2026-10-11

pytest 學習地圖

pytest 是 Python 最常用的測試框架:用一般的 assert 就能寫測試,它會自動找出並執行所有測試,失敗時清楚顯示「預期什麼、實際得到什麼」。本站用繁體中文整理 pytest 最重要的觀念與實作,從第一個測試一路寫到 GitHub Actions 自動化,並收錄官方推薦與優質 YouTube 影音教學。

核心概念

pytest 功能很多,但日常 80% 的測試只用到下面五件事。先把這五件事練熟,再去看外掛與進階設定。

核心技能 解決什麼問題 對應頁面
測試探索規則(test discovery) 檔名、函式名稱怎麼取,pytest 才找得到測試 測試探索與命名規則
assert 與 pytest.raises 驗證回傳值與預期的例外 assert 與例外測試
fixture 把準備資料、建立連線、清理資源的程式碼抽出來共用 Fixture
參數化(@pytest.mark.parametrize) 同一個測試邏輯,跑很多組輸入 參數化測試
命令列選項(-v、-k、-x、--lf) 只跑想跑的測試、快速定位失敗 執行測試與命令列

一句話記住:命名讓 pytest 找到測試,assert 判斷對錯,fixture 準備環境,parametrize 擴大覆蓋,命令列控制要跑哪些。

學習路線

  • 入門基礎


    安裝 pytest、寫出第一個測試、理解命名規則與常用命令列選項。

  • 核心技巧


    assert、例外測試、fixture、參數化與 marker,是每個專案都會用到的主力功能。

  • 進階應用


    內建 fixture、mock 外部依賴、設定檔與 conftest.py、覆蓋率與平行化外掛。

  • 實戰與工作流程


    好測試的寫法、專案結構、TDD,以及用 GitHub Actions 每次 push 自動跑測試。

想先看影片的讀者,可以直接到 影音學習資源,裡面依程度整理了中文、官方推薦與英文優質教學。

常見問題

pytest 跟 unittest 差在哪?

unittest 是 Python 標準函式庫內建的測試框架,必須寫成類別並繼承 unittest.TestCase,再用 self.assertEqual() 等方法驗證。pytest 只需要一般函式加上 assert,樣板程式碼少很多,失敗訊息也更詳細;它還能直接執行既有的 unittest 測試,所以可以逐步改寫、不必一次搬完。

學 pytest 需要先會什麼?

會寫 Python 函式、懂 import 與模組、會在終端機執行指令就夠了。裝飾器(decorator)與 yield 在學 fixture 與參數化時會用到,本站在用到的地方會再說明。

pytest 有官方認證或證照嗎?

沒有。pytest 是開源社群專案,官方沒有推出認證課程或考試。最可靠的學習來源是 pytest 官方文件 與官方整理的 Talks and Tutorials 演講清單,本站的 影音學習資源 已從中挑出值得看的影片。

測試要寫多少才夠?

沒有固定比例。實務上先替「最常被呼叫、壞了損失最大」的程式碼寫測試,並在每次修 bug 時補一個能重現該 bug 的測試。覆蓋率(coverage)可以幫忙找出完全沒被測到的程式碼,但 100% 覆蓋率不代表沒有 bug,詳見 常用外掛。

推薦影音

使用 Pytest 進行單元測試(PyCon TW 2021)

台中 Python 社群 Taichung.py 組織者 Max Lai 在 PyCon Taiwan 的中文工作坊,約一個半小時,涵蓋單元測試觀念、pytest 用法、解除外部依賴(mock)、測試覆蓋率與 Flask 測試,適合想用中文完整入門的讀者。

getting started with pytest

pytest 核心開發者 Anthony Sottile(anthonywritescode)13 分鐘的 pytest 入門介紹,節奏快、內容精準,適合想在最短時間內掌握基本用法的人。

官方資源