單元測試——使用 Test Client 與 pytest 測試 API
這是 Django Ninja 系列教學的第 29 篇。
「請問你們的專案有單元測試嗎?」
面試中如果你提出這個問題,可能會讓面試官面有難色。
測試的重要性,大部分開發者都心知肚明。只是願意認真對待的人未必很多。
但如果真心想提高程式碼品質、減少 bug,讓專案更容易維護,那單元測試依舊是不可或缺的工具。
良好的測試不僅能幫助我們及早發現問題,還能在專案重構或新增功能時,確保現有的功能不會被破壞。
雖然寫測試會增加初期的開發時間,而且維護上也需要花費心力——這本來就不是一件輕鬆的事。但長期而言,它能為專案帶來持續的健全與穩定性。
所以,我們還是好好寫測試吧!
快速導覽
👉 完整系列目錄:點此查看
👉 程式碼範例:GitHub 範例專案
本文大綱
這是整個系列中唯一一篇有全文大綱的教學。
原因是,本文要提及的事項較多,畢竟單元測試這麼大的主題,怎麼可能靠一篇 2500 字的文章說完。限於篇幅,無法一一詳談——但也不能直接省略。
所以需要有一個供讀者鳥瞰的全文輪廓,讓你更容易了解、吸收。大綱如下:
- 單元測試的理想與現實。
- Django API 測試重要概念說明。
- Test Client 的意義與用途。
- pytest 和 pytest-django 簡介。
- pytest fixtures 與測試函式。
- 測試程式碼的實作與解說。
- 結語。
簡單來說,本文不會講解所有的程式碼改動,而是在必要時提及。其餘部分,由我直接實作並收錄在範例專案中,讓讀者自行參考。
在有限的篇幅中,帶你了解整體概念比關注細節更重要。當你掌握了基本概念,再去看程式碼會更加得心應手。
有關單元測試的更多討論,歡迎參考這篇心得〈為什麼你應該寫單元測試——《Python 工匠》〉。這是一本立論紮實的好書,相信你會有所收獲。
本文所有的程式碼改動,可參考這個 PR。