结对编程2——单元测试
合作伙伴:庞伊凡(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',则通过测试。
- 除0错误测试
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',通过测试。
- 单元测试展示
结对过程
-
测试过程遇到的问题以及解决方案
1.在获取两个数值和符号的过程中,一直在报错TypeError: operate() takes exactly 3 arguments (1 given),后来更换了函数调用方法 完成了结果。
2.比较的过程中,需要保持数据类型相同。以前吃过类似的亏,所以解决起来相对比较快速。 -
合作照片
小结&感受
此次单元测试是基于先前的四则运算的程序,在和庞伊凡同学的合作中,我们使用的是她的个人四则运算程序。因为我的编程基础较弱,她一直在教我一些新的东西,让我对Python、HTML也有了一些了解,现在又尝试做测试,真的觉得在学习在进步,希望一直保持这个状态!
PSP表格