每天的專案會同步到 github 上,可以前往 這個網址 如果對於專案有興趣或是想討論一些問題,歡迎留言 OR 來信討論,信箱為:nickchen1998@gmail.com
昨天我們結束了為期 11 天的 pytest 入門教學,接下來要花費兩天的時間來介紹 TDD 開發流程,今天主要以概念為主,明天會實際利用 TDD 的概念來開發一個簡單的小腳本,來 demo 給大家看
TDD 全名為 Test-Driven Development 中文翻譯為 「測試驅動開發」,顧名思義就是藉著撰寫測試程式,來一步一步建構出我們的系統,其倡導的概念為,先撰寫測試程式,再撰寫實際相對應的 function,因此程式開發者需要先行和 PM 或使用者討論系統需求,並逐步擬定測試計畫,最後才會真正開始撰寫程式
採用 TDD 開發的好處有:
有好處當然也有壞處:
總結來說,筆者認為不論甚麼樣的方式,最重要的還是要保持持續溝通,只是說 TDD 這種開方方式,可以更方便的讓我們進行程式的開發,尤其是不用在事後補寫測試程式以及可以邊寫邊測試 function 這點,真的是很方便,不過還是老話一句,規定是死的,人是活的,不論是什麼工具,都應該要活用,而不是一昧地配合規定,找出適合自己的開發方式,才是最正確的寫程式的方法
接下來我們就針對 TDD 中的一些原則以及步驟來進行說明
在 TDD 當中,對於每個測試程式的撰寫有著 3A 原則 (步驟),分別為 Arrange、Act 以及 Assert,下面按照順序來進行說明
下面這段程式碼是我們在 demo 3A 原則的時候要進行測試的函式
def add_num(num1: int, num2: int) -> int:
return num1 + num2
def test_add_num():
# Arrange
num1 = 10
num2 = 20
except_result = 30
def test_add_num():
# Arrange
num1 = 10
num2 = 20
except_result = 30
# Act
result = add_num(num1, num2)
def test_add_num():
# Arrange
num1 = 10
num2 = 20
except_result = 30
# Act
result = add_num(num1, num2)
# Assert
assert result == except_result
以上就是 TDD 針對撰寫每一個 test case 的 3A 原則
接下來是要講的部分是,TDD 針對開發流程的五步驟,亦即每一組函式的開發過程 (function + test function),分別為:
今天我們簡單介紹了一下 TDD 的簡介、3A 原則以及開發五步驟,明天我們會實際利用 TDD 的開發五步驟來簡單時做一個小型的爬蟲腳本,來為大家 demo 實際該如何使用 TDD 開發程式碼