kyomind / blog-reply

Code and Me 部落格留言
https://blog.kyomind.tw/
0 stars 0 forks source link

《Python 工匠》筆記(二)對「單元測試」的看法與建議 - Code and Me #29

Open utterances-bot opened 6 months ago

utterances-bot commented 6 months ago

《Python 工匠》筆記(二)對「單元測試」的看法與建議 - Code and Me

關於「寫單元測試」,你可能已經聽過很多建議。而本書的這 5 項建議,則是你絕對不能錯過的。

https://blog.kyomind.tw/python-craftsman-02/

kavinqq commented 6 months ago

隨著自己專案的越來越大和更多會針對舊規格的擴充. 開始也意識到自己因開發時間不足沒考慮test的嚴重性QQ 所以又來這邊找找文章:D 謝謝你的分享

想請問一下這一本書是適合沒寫過unittest的人看嗎? 我工作主要是用drf去開發設計api, 比較有的疑惑會是怎樣才算是寫好一個test, 是正常的跑一次就好嗎? 還是要考慮每一種邊界值呢?

kyomind commented 6 months ago

@kavinqq 我的 Python 單元測試入門是從這兩篇文章開始的:

作者李唯推薦這本「Python Testing with pytest」,我有買電子版,確實不錯,pytest 常用的功能都有提到

剛開始寫測試也不必太嚴肅,覆蓋率先到 60% 再說 高覆蓋率確實不能保證什麼,但低覆蓋率肯定是讓人很抖 api 測試和一般 Python 程式的測試也略有不同,需要透過 Django 或 drf 提供的 client 去打 api 以及 Django 測試上的一些設定,這些都需要摸索(問 ChatGPT 應該就可以了)

總之先把每一支 api 都用測試函式打一打,至少得到 200,其餘再慢慢加強就好 這樣至少取代了,新增完功能後,要使用 api client(比如 postman)手動打 api 測試的麻煩

kavinqq commented 6 months ago

謝謝你! 我也來拜讀一下~~

kavinqq commented 4 months ago

一段時間過去了~ 現在用drf寫test有比較順手一點. 來回饋一下 :D

目前測試工具是pytest + pytest-cov + coverage 可能還沒有辦法每個地方都寫到100%的涵蓋率 但至少整個開發的方式有點改變

現在修正bug都會先跑test, 然後去修正我的test 整理來講交出去的功能被QA報錯自己有信心很多~

kyomind commented 4 months ago

@kavinqq 手腳真是快XD 有單元測試信心真的差很多,雖然維護測試函式有時也不輕鬆 我的經驗是覆蓋率到75%以上,想繼續提高往往就不太容易 不過想想,畢竟「有覆蓋到」也不等於robust,所以不強求 (我會安慰自己:不要小看自己的60-75%,很多專案根本連單元測試都沒有呢!哈哈哈) 但這0到75%的品質與信心提升,著實可觀

kavinqq commented 4 months ago

我是轉職想說不能落後人家太多XD 多學一點說不定有機會可以跟像你這樣常常在分享的人共事 感覺很夢幻~

現在開始在弄docker 可能會想把自己的專案先放到gcp unit test -> 整理專案(pre-commit/black/flask8...) ->docker 下一步可能之後再看看這邊的文章找靈感

謝謝你的分享:D

kyomind commented 4 months ago

@kavinqq 同為轉職開發者,我很理解那種「不願落於人後」的心情 我也想和某些文章的作者共事,哈哈哈,那一定很有趣 這些都有機會實現,一起加油