作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/7629
git地址为:https://e.coding.net/thiking/si_ze_yun_suan.git
结对伙伴:孙晓宇
使用语言:Python
测试框架:UnitTest
测试内容: 四则运算式子生成及运算结果
要求1 对每个功能,先给出测试用例,然后再编码功能。请注意把测试用例视为功能需求完成的检验指标。 (40分)
要求2 在博客报告测试用例全部fail 到 全部pass 的过程,报告事实 (fail到修改代码或者测试用例,到pass) 以及收获。 除了最初的框架,测试用例中存在一次性pass没有经过fail的,也报告一次性通过,给出如此优秀地实现了这部分功能的代码。由2位同学中的一位发布博客提交到作业,指明自己的结对伙伴;另一位在作业中引用这一博客,指明自己的结对伙伴。(40分)
2、单元测试代码
import unittest from f4_1 import creat_formula,creat_equations from f4 import out_input,creat_equation,run_count class UnitTest(unittest.TestCase): def test01_create_equation(self): #功能二create_equation函数生成式子测试 print("create_equation函数单元测试开始:\n") print("create_equation函数随机产生一个式子:") result = creat_equation() print(result) self.assertIsNotNone(creat_equation()) print("式子产生运算通过") print("create_equation函数单元测试结束。\n") def test02_creat_formula(self): #功能四creat_formula函数生成式子测试 print("creat_formula函数单元测试开始:\n") print("creat_formula函数随机产生一个式子:") result = creat_formula() print(result) self.assertIsNotNone(creat_formula()) print("式子产生运算通过") print("creat_formula函数单元测试结束。\n") def test03_creat_equations(self): #功能一creat_equations函数生成式子测试 print("creat_equations函数单元测试开始:\n") print("creat_equations函数随机产生一个式子:") result = creat_equations() print(result) self.assertIsNotNone(creat_equations()) print("式子产生运算通过") print("creat_equations函数单元测试结束。\n") def test04_run_count(self): #测试运算结果 print("run_count函数和单元测试开始:") result = creat_equation() print("create_equation函数随机产生一个式子:") print(result) right = int(run_count(result)) print("请输入你的计算结果:") get_input = input() get_input = int(get_input) print(get_input) print("式子的计算结果为:") print(right) self.assertEqual(right,get_input) print("通过测试") print("run_count函数单元测试结束:\n") if __name__=='__main__': unittest.main()
测试一(功能一不带括号产生式子)
测试二(功能二产生带括号的例子)
测试三(功能四产生分数式子)
测试四(run_count函数运算结果)
测试结果均为正确,欢迎使用更多测试用例进行测试
被测函数分别为:
creat_equations函数
def creat_equations(): #功能一生成随机式子 ops = ['+', '-', '*', '/'] num1 = r(1, 9) #产生随机数 num2 = r(1, 9) num3 = r(1, 9) num4 = r(1, 9) ops1 = r(0, 2) ops2 = r(0, 3) ops3 = r(0, 3) equa = str(num1) + ops[ops1] + str(num2) + \ ops[ops2] + str(num3) + \ ops[ops3] + str(num4) return (equa)
creat_equation函数
def creat_equation(): #生成随机式子值 ops = ['+', '-', '*', '/'] num1 = r(1, 9) #产生随机数 num2 = r(1, 9) num3 = r(1, 9) num4 = r(1, 9) ops1 = r(0, 3) ops2 = r(0, 3) ops3 = r(0, 3) dic = {1: '(' + str(num1) + ops[ops1] + '(' + str(num2) + ops[ops2] + str(num3) + ')' + ')' + ops[ops3] + str(num4), 2: '(' + str(num1) + ops[ops1] + str(num2) + ')' + ops[ops2] + str(num3) + ops[ops3] + str(num4), 3: str(num1) + ops[ops1] + str(num2) + ops[ops2] + '(' + str(num3) + ops[ops3] + str(num4) + ')', 4: str(num1) + ops[ops1] + '(' + '(' + str(num2) + ops[ops2] + str(num3) + ')' + ops[ops3] + str(num4) + ')', 5: '(' + '(' + str(num1) + ops[ops1] + str(num2) + ')' + ops[ops2] + str(num3) + ')' + ops[ops3] + str(num4), 6: str(num1) + ops[ops1] + '(' + str(num2) + ops[ops2] + '(' + str(num3) + ops[ops3] + str(num4) + ')' + ')', 7: str(num1) + ops[ops1] + '(' + str(num2) + ops[ops2] + str(num3) + ops[ops3] + str(num4) + ')', 8: '(' + str(num1) + ops[ops1] + str(num2) + ops[ops2] + str(num3) + ')' + ops[ops3] + str(num4), 9: '(' + str(num1) + ops[ops1] + str(num2) + ')' + ops[ops2] + '(' + str(num3) + ops[ops3] + str(num4) + ')', 10: str(num1) + ops[ops1] + '(' + str(num2) + ops[ops2] + str(num3) + ')' + ops[ops3] + str(num4),} test = r(1, 10) eq = dic[test] return (eq)
creat_formula函数
def creat_formula(): #功能四生成随机式子 ops = ['+', '-', '*', '/'] num1 = r(1, 9) #产生随机数 num2 = r(1, 9) num3 = r(1, 9) num4 = r(1,9) ops1 = r(0, 2) ops2 = r(0, 3) ops3 = r(0, 3) dic = { 1:str(f(r(1,9),r(1,9))) + ops[ops1] + str(f(r(1,9),r(1,9))) + ops[ops2] + str(num2) + ops[ops3] + str(num3), 2:str(f(r(1,9),r(1,9))) + ops[ops1] + str(num1) + ops[ops2] + str(f(r(1,9),r(1,9))) +ops[ops3] + str(num3), 3: str(f(r(1, 9), r(1, 9))) + ops[ops1] + str(num1) + ops[ops2] + str(f(r(1, 9), r(1, 9))) + ops[ops3] + str(f(r(1, 9), r(1, 9))), 4: str(f(r(1, 9), r(1, 9))) + ops[ops1] + str(num1) + ops[ops2] + str(num2) + ops[ops3] + str(num3), 5:str(f(r(1,9),r(1,9))) + ops[ops1] + str(num1) + ops[ops2] + str(num2)+ops[ops3] + str(f(r(1,9),r(1,9))) , 6:str(num1) + ops[ops1] + str(num2) + ops[ops2] + str(num3) + ops[ops3] + str(num4), 7:str(f(r(1,9),r(1,9))) + ops[ops1] + str(f(r(1,9),r(1,9))) + ops[ops2] + str(f(r(1,9),r(1,9))) + ops[ops3] +str(num3), 8: str(f(r(1, 9), r(1, 9))) + ops[ops1] +str(f(r(1,9),r(1,9))) + ops[ops2] + str(num2) + ops[ops3] + str(f(r(1,9),r(1,9))), 9: str(f(r(1, 9), r(1, 9))) + ops[ops1] + str(f(r(1,9),r(1,9))) + ops[ops2] + str(f(r(1,9),r(1,9))) +ops[ops3] + str(f(r(1,9),r(1,9))), 10: str(num1) + ops[ops1] + str(num2) + ops[ops2] + str(f(r(1, 9), r(1, 9))) + ops[ops3] + str(f(r(1, 9), r(1, 9))), 11: str(num1) + ops[ops1] + str(f(r(1,9),r(1,9))) + ops[ops2] + str(f(r(1,9),r(1,9))) + ops[ops3] + str(f(r(1,9),r(1,9))), 12: str(num1) + ops[ops1] + str(f(r(1,9),r(1,9))) + ops[ops2] + str(f(r(1,9),r(1,9))) + ops[ops3] + str(num3), 13: str(num1) + ops[ops1] + str(f(r(1,9),r(1,9))) + ops[ops2] + str(num2) +ops[ops3] + str(f(r(1,9),r(1,9))), 14: str(num1) + ops[ops1] + str(num2) + ops[ops2] + str(num2) + ops[ops3] + str(f(r(1, 9), r(1, 9))), 15: str(num1) + ops[ops1] + str(f(r(1,9),r(1,9))) + ops[ops2] + str(num2) +ops[ops3] + str(num3), 16: str(num1) + ops[ops1] + str(num2) + ops[ops2] + str(f(r(1,9),r(1,9))) +ops[ops3] + str(num3), } eq = dic[r(1, 16)] return (eq)
run_count函数
def run_count(equa): #计算式子值函数 result = f(eval(equa)).limit_denominator(1000) #利用eval函数计算式子的值,并将小数转化为分数 result = str(result) return(result)