结对编程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表格

posted @ 2017-03-28 23:04  九青小水  阅读(216)  评论(1编辑  收藏  举报