Python unit test 單元測試 | 專案應用分享

Alan Syue
Mar 9, 2020

最近在與長庚大學的學生協作開發畢業學分的計算工具,如果有興趣可以參考之前寫的: 畢業學分計算工具開發心得 | side project 的嘗試與迭代 ,礙於獨立開發時並沒有很完善規劃,擔心學生們會不知道從何下手,那時就有進行了一些模組化、Docker 化的工作,也有想說怎麼可以讓他們方便測試以及整合到往後可以自動化測試。

由於專案後端 API 是用 Python Flask 做的,於是我就去研究了一下 Python unittest 的測試 framework。以下分享如何在專案中應用與實作。

一、專案架構

當時規劃的檔案架構大致上是這樣,countCredit.py 是放置計算學分邏輯的程式,會處理前端 post 過來的學分資料,然後 testCase.json 是哪來放 test case,裡面會放課程代碼及學分 ( 跟 post 過來的資料格式一樣 ) 以及計算結果, testCase.py 會去執行有加進去的測試程式碼,計算是不是每個都有符合預期。

graduateTools
| ------ countCredit.py # 計算學分的程式
| ------ testCase.json # 放 test case 的檔案
| ------ testCase.py # 執行測試的程式

二、安裝

Python 內建 unittest,無需另外安裝

三、實作介紹

先上程式碼:

稍微分段說明一下

  1. setUp : 方法是測試前執行,這邊我是先去取 testCase.json 的 test case
  2. tearDown : 方法是測試後執行,我沒有特別拿來做什麼
  3. test_hcm : 所有要加入測試的方法,前綴都要加上 test,而最後我用了 assertEqual 方法,需要提供測試預期結果以及計算結果,會判斷兩者是否相同
  4. unittest.main() : 用此方法來執行所有測試

四、如何測試

開啟 terminal 執行 python -m unittest,便會輸出測試結果 測試成功

測試失敗

另外也可以用 python -m unittest -v 輸出詳細測試資訊

總結

之後開發會希望在實作不同科系的計算邏輯後,都能加入單元測試,並在 commit 前先執行測試,減少程式碼的錯誤。之前並無單元測試經驗,因此在規劃及實作上有任何建議,也歡迎指教,謝謝!

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Alan Syue
Alan Syue

Written by Alan Syue

Backend Engineer at UPN | Love to share everything

No responses yet

Write a response