此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/7629
结对伙伴:杨萍
2人结对,使用TDD测试框架 (如NUnit, JUnit, cppUnit等)完成本周作业四则运算试题生成的单元测试。
回答什么是TDD测试框架?
TDD是测试驱动开发(Test-Driven Development)的英文简称,是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD虽是敏捷方法的核心实践,但不只适用于XP(Extreme Programming),同样可以适用于其他开发方法和过程。
TDD的基本思路就是通过测试来推动整个开发的进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析,设计,质量控制量化的过程。
TDD的重要目的不仅仅是测试软件,测试工作保证代码质量仅仅是其中一部分,而且是在开发过程中帮助客户和程序员去除模棱两可的需求。TDD首先考虑使用需求(对象、功能、过程、接口等),主要是编写测试用例框架对功能的过程和接口进行设计,而测试框架可以持续进行验证。
优缺点如下:
要求1 对每个功能,先给出测试用例,然后再编码功能。请注意把测试用例视为功能需求完成的检验指标。 (40分)
要求2 在博客报告测试用例全部fail 到 全部pass 的过程,报告事实 (fail到修改代码或者测试用例,到pass) 以及收获。 除了最初的框架,测试用例中存在一次性pass没有经过fail的,也报告一次性通过,给出如此优秀地实现了这部分功能的代码。由2位同学中的一位发布博客提交到作业,指明自己的结对伙伴;另一位在作业中引用这一博客,指明自己的结对伙伴。(40分)
功能一、二测试:四则运算,支持括号。
测试用例 |
运行结果 |
期望结果 |
输入正确的运算结果 |
答对啦,你真是个天才! |
答对啦,你真是个天才! |
输入错误的运算结果 |
再想想吧,答案似乎是**喔! |
再想想吧,答案似乎是**喔! |
测试后共答20题 |
你一共答对**道题,共20道题 |
你一共答对**道题,共20道题 |
功能一测试代码:
1 # 功能1测试代码 2 def test_f4_answer(self): 3 print("_f4_answer函数单元测试开始:") 4 _eq = input("输入一个四则运算:") 5 _eq_ans = input("输入一个正确的答案:") 6 self.assertEqual(_eq_ans ,f4()._f4_answer(eq = _eq)) 7 print("_f4_answer函数单元测试结束。") 8 print("OK")
输入一个四则运算式子,并输入结果,最后程序判断对错,运行结果如下:
功能二测试代码:
1 # 功能二测试代码 2 def test_f4_input(self): 3 print("_f4_input函数单元测试开始:") 4 self.assertEqual(0,f4()._f4_input()) 5 print("_f4_input函数单元测试结束。") 6 print("OK")
运行截图如下:
功能三、四测试:限定题目数量,"精美"打印输出,避免重复,支持分数出题和运算。
测试用例 |
运行结果 |
期望结果 |
f4 -c a |
题目数量必须是 正整数 |
题目数量必须是 正整数 |
f4 -c -6 |
题目数量必须是 正整数 |
题目数量必须是 正整数 |
f4 -c ‘ ’ |
题目数量必须是 正整数 |
题目数量必须是 正整数 |
f4 -c 3.6 |
题目数量必须是 正整数 |
题目数量必须是 正整数 |
f4 -c 20 |
“精美”打印输出 |
“精美”打印输出 |
f4 -c test |
题目数量必须是 正整数 |
题目数量必须是 正整数 |
功能三、四测试代码:
1 # 测试功能3、功能4 2 def test_f4_integer_parser(self): 3 print("_f4_integer_parser函数单元测试开始:") 4 x = input("输入命令行参数:") 5 self.assertEqual(0,f4()._f4_integer_parser(x)) 6 print("_f4_integer_parser函数单元测试结束。") 7 print("OK") 8 if __name__ == '__main__': 9 unittest.main()
测试截图如下:
要求3 做好准备,在接下的一周你可能无法通过别人的测试用例。 (0分)
要求4 使用coding.net做版本控制。checkin 前要求清理 临时文件、可执行程序,通常执行 build-clean可以达到效果。(5分)
测试代码地址:https://e.coding.net/xintongxue123/sizeyunsuan.git