此作业的要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/7629
结对伙伴:刘信鹏
git地址: https://e.coding.net/secret/ASETest1_3.git
实用语言:Python
集成环境:Pycharm
测试框架:UnitTest
测试内容:本周作业 四则运算试题生成
要求1 对每个功能,先给出测试用例,然后再编码功能。请注意把测试用例视为功能需求完成的检验指标。 (40分)
功能1 测试用例
ID | 测试用例 | 预期结果 |
1 | 输入f4 | 出现运算表达式,换行打印? |
2 | f4后输入正确答案 | 提示:“答对啦,你真是个天才!”并给出下一题及换行后的问号 |
3 | f4后输入错误答案 | 提示:“再想想吧,答案似乎是x喔!”并给出下一题及换行后的问号 |
4 | 测试运算符是否只包含加减乘除 | 输出结果的运算符中只含有加减乘除 |
功能2 测试用例
ID | 测试用例 | 预期结果 |
5 | 准确回答固定X题目,查看是否与输出正确题目一致 | 你一共答对X道题,共20道题 |
6 | 用户输入f4后,观察给出的20道算术表达式是否含有括号 | 括号出现状况存在,并出现位置合理 |
7 | 使用TDD工具UnitTest测试算式表达式转化成逆波兰式是否正确情况:不含括号。输入中缀表达式:6/9+8-4 输入中缀表达式的后缀表达式:69/8+4- | 输出为:表达式转换成逆波兰式功能单元测试结束。 表达式求值功能测试完成 |
8 | 使用TDD工具UnitTest测试算式表达式计算结果是否正确情况。输入一个四则运算:1+1+3+8 输入一个正确答案:13 | 输出为:表达式求值功能单元测试结束。 表达式求值功能测试完成 |
9 | 使用TDD工具UnitTest测试算式表达式计算结果是否正确情况:含两个括号。输入:((7+3)-6)*2 输入一个正确答案:8 | 输出为: 表达式求值功能单元测试结束。 表达式求值功能测试完成
|
功能3测试用例
ID | 测试用例 | 预期结果 |
10 | 用户输入 f4 -c -5 | 输出:”题目数量必须是正整数” |
11 | 用户输入 f4 –c 0.7 | 输出:”题目数量必须是正整数” |
12 | 用户再次输入 f4 –c 3 | 按格式正确输入3道题,且有答案 |
要求2 在博客报告测试用例全部fail 到 全部pass 的过程,报告事实 (fail到修改代码或者测试用例,到pass) 以及收获。 除了最初的框架,测试用例中存在一次性pass没有经过fail的,也报告一次性通过,给出如此优秀地实现了这部分功能的代码。(40分)
功能三测试:
测试用户输入对应题目后生成的题目数量
fail:测试功能三f4 -c 10 报错,重现如下:
其中原因为未将str型转换为int型,找到错误代码:
class Test(object):
def __init__(self):
pass
def _f4(self):
pass
def _fun3(self,num):
if num.isdigit() and (num) > 0:
print_exp_result(num)
else:
print('题目数量必须是 正整数。')
return (0)
知识兔修改后代码如下:
class Test(object):
def __init__(self):
pass
def _f4(self):
pass
def _fun3(self,num):
if num.isdigit() and int(num) > 0:
print_exp_result(int(num))
else:
print('题目数量必须是 正整数。')
return (0)
知识兔修改后测试结果如图:
其他重要pass用例重现:
含括号表达式计算测试重现:
不含括号表达式计算测试:
表达式转换成逆波兰式功能测试:
重要代码展示:
# 表达式转换成逆波兰式功能测试
def test_middle_to_after(self):
print("表达式转换成逆波兰式功能单元测试开始:")
_eq = input("输入一个四则运算中缀表达式:")
_eq_ans = input("输入此中缀表达式的后缀表达式:")
self.assertEqual(_eq_ans, Test()._test_middle_to_after(eq=_eq))
print("表达式转换成逆波兰式功能单元测试结束。", end='\n\n')
print("表达式求值功能测试完成", end='\n\n')
# 表达式求值功能测试(不含括号)
def test_answer_nobra(self):
print("表达式求值功能单元测试(不含括号)开始:")
_eq = input("输入一个四则运算:")
_eq_ans = input("输入一个正确的答案:")
self.assertEqual(_eq_ans ,Test()._test_answer(eq = _eq))
print("表达式求值功能单元测试结束。", end='\n\n')
print("表达式求值功能测试完成", end='\n\n')
# 表达式求值功能测试(含括号)
def test_answer_bra(self):
print("表达式求值功能单元测试(含括号)开始:")
_eq = input("输入一个四则运算:")
_eq_ans = input("输入一个正确的答案:")
self.assertEqual(_eq_ans, Test()._test_answer(eq=_eq))
print("表达式求值功能单元测试结束。", end='\n\n')
print("表达式求值功能测试完成", end='\n\n')
知识兔总体收获:
由于是第一次进行单元测试,所以在执行上略显稚嫩,完成的总体效率也不是十分可观。不过UnitTest框架在pycharm中使用还算相对简单,这也却保了单元测试的顺利进行。在编写测试用例时,为了力求测试方式的创新,做了很多努力。通过两个人的积极讨论,对可能出现的结果进行预测,真的有利于更好地完成程序功能。
要求3 做好准备,在接下的一周你可能无法通过别人的测试用例。 (0分)
ID测试用例预期结果10用户输入 f4 -c -5输出:”题目数量必须是 正整数”11用户输入 f4 –c 0.7输出:”题目数量必须是 正整数”12用户再次输入 f4 –c 3按格式正确输入3道题,且有答案