項目代碼位址
合作夥伴:龐伊凡(201421123011)、趙娅汀(201421123012)
需求分析
把計算子產品提取出來,單獨建立一個類。針對提取出來的計算類的接口函數做單元測試。
測試内容:
- 加減乘除功能測試
- 輸入非法字元測試
- 除0錯誤測試
測試架構設計&模拟測試資料
- 加減乘數功能測試
def test_add(self): #測試加法
que=[[2,'+',4],[3.0,'+',5.0],[10,'+',4],[10,'+',2.0],[25,'+',2.0]]
ans=['6','8.0','14','12.0','27.0']
for i in range(len(que)):
test=calc.operate(que[i][0],que[i][1],que[i][2])
self.assertEqual(test, ans[i])
def test_sub(self): #測試減法
que=[[2,'-',4],[3.0,'-',5.0],[10,'-',4],[10,'-',2.0],[25,'-',2.0]]
ans=['-2','-2.0','6','8.0','23.0']
for i in range(len(que)):
test=calc.operate(que[i][0],que[i][1],que[i][2])
self.assertEqual(test, ans[i])
def test_mult(self): #測試乘法
que=[[2,'*',4],[3.0,'*',5.0],[10,'*',4],[10,'*',2.0],[25,'*',2.0]]
ans=['8','15.0','40','20.0','50.0']
for i in range(len(que)):
test=calc.operate(que[i][0],que[i][1],que[i][2])
self.assertEqual(test, ans[i])
def test_div(self): #測試除法
que=[[2,'/',4],[3.0,'/',5.0],[10,'/',4],[10,'/',2.0],[25,'/',2.0]]
ans=['0','0.6','2','5.0','12.5']
for i in range(len(que)):
test=calc.operate(que[i][0],que[i][1],que[i][2])
self.assertEqual(test, ans[i])
将加減乘除分别寫在add、sub、mult、div四個函數裡,每個函數内的que清單為測試資料,ans清單為應有的測試結果。
若測試加減乘除功能後得出的結果等于ans清單中的結果,則通過測試,反之則不通過。
def test_oper_more_one(self): #測試非法輸入
que=[[2,'++',4],[3.0,'---',5.0],[10,'**',4],[10,'////',2.0],[25,'//',2.0]]
ans='syntax_error'
for i in range(len(que)):
test=calc.operate(que[i][0],que[i][1],que[i][2])
self.assertEqual(test, ans)
輸入非法字元,若回報為'syntax_error',則通過測試。
def test_zero(self): #測試除數為0情況
que=[[2,'/',0],[3.0,'/',0],[10,'/',0]]
ans='zero_error'
for i in range(len(que)):
test=calc.operate(que[i][0],que[i][1],que[i][2])
self.assertEqual(test, ans)
進行除法計算時,若除數為0,則回報為'zero_error',通過測試。
- 單元測試展示
結對程式設計2——單元測試
結對過程
-
測試過程遇到的問題以及解決方案
1.在擷取兩個數值和符号的過程中,一直在報錯TypeError: operate() takes exactly 3 arguments (1 given),後來更換了函數調用方法 完成了結果。
2.比較的過程中,需要保持資料類型相同。以前吃過類似的虧,是以解決起來相對比較快速。
- 合作照片
結對程式設計2——單元測試
小結&感受
此次單元測試是基于先前的四則運算的程式,在和龐伊凡同學的合作中,我們使用的是她的個人四則運算程式。因為我的程式設計基礎較弱,她一直在教我一些新的東西,讓我對Python、HTML也有了一些了解,現在又嘗試做測試,真的覺得在學習在進步,希望一直保持這個狀态!
PSP表格