梁梦瑶 20190919-4 单元测试

此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/7629

git地址:https://e.coding.net/sxl357/f4.git

结对伙伴:宋晓丽

使用语言:python

测试框架:UnitTest

测试内容:四则运算试题生成

要求1 对每个功能,先给出测试用例,然后再编码功能。请注意把测试用例视为功能需求完成的检验指标。 (40分)

 梁梦瑶 20190919-4 单元测试_第1张图片

要求2 在博客报告测试用例全部fail 到 全部pass 的过程,报告事实 (fail到修改代码或者测试用例,到pass) 以及收获。 除了最初的框架,测试用例中存在一次性pass没有经过fail的,也报告一次性通过,给出如此优秀地实现了这部分功能的代码。由2位同学中的一位发布博客提交到作业,指明自己的结对伙伴;另一位在作业中引用这一博客,指明自己的结对伙伴。(40分)

错误一:使用测试用例2

在测试循环出题功能时出现错误:

梁梦瑶 20190919-4 单元测试_第2张图片

 

发现是由于如果用户输入?的话就会出错。于是我们找到对应的函数进行了修改:加上对问号的替换,如果用户输入?就将"?"替换为""。

原代码:

def question():
    num = 0
    global correctNumber  # 定义全局变量,统计答对的次数
    while num <20:
        generate=Expression() #定义对象
        expression = generate.expre()#调用generate()函数,生成运算式
        print(expression + "=")
        expression1 = make_Expression(expression)  # 将中缀表达式转换为后缀表达式
        result = make_Value(expression1)  # 计算后缀表达式的值
        userAnswer = input()  # 输入你的答案
        if (float(userAnswer) == float(result)):  # 判断用户结果是否和正确答案相等
            correctNumber += 1
            print("答对了,你真是个天才!")
        else:
            result = str(result)
            print('再想想吧,答案似乎是' + result + '喔!')
        num += 1
    correctNumber = str(correctNumber)
    print("你一共答对" + correctNumber + "道题,共20道题。")

修改后代码:

def question():
    num = 0
    global correctNumber  # 定义全局变量,统计答对的次数
    while num <20:
        generate=Expression() #定义对象
        expression = generate.expre()#调用generate()函数,生成运算式
        print(expression + "=")
        expression1 = make_Expression(expression)  # 将中缀表达式转换为后缀表达式
        result = make_Value(expression1)  # 计算后缀表达式的值
        userAnswer = input()  # 输入你的答案
        if '?' in userAnswer:
            userAnswer = userAnswer.replace('?', '')#str.replace(old,new,max)方法,把字符中的old替换成new,且替换不超过max次
        if (float(userAnswer) == float(result)):  # 判断用户结果是否和正确答案相等
            correctNumber += 1
            print("答对了,你真是个天才!")
        else:
            result = str(result)
            print('再想想吧,答案似乎是' + result + '喔!')
        num += 1
    correctNumber = str(correctNumber)
    print("你一共答对" + correctNumber + "道题,共20道题。")

修改后截图:
梁梦瑶 20190919-4 单元测试_第3张图片

错误二:使用测试用例3
判断用户答案和结果是否相等的时候出现错误:

 我们发现输入正确的答案,结果是错的,后来计算了多道题时发现,输入整数都是错误的,只有输入浮点数才能正确。

原代码

def question():
    num = 0
    global correctNumber  # 定义全局变量,统计答对的次数
    while num <20:
        generate=Expression() #定义对象
        expression = generate.expre()#调用generate()函数,生成运算式
        print(expression + "=")
        expression1 = make_Expression(expression)  # 将中缀表达式转换为后缀表达式
        result = make_Value(expression1)  # 计算后缀表达式的值
        userAnswer = input()  # 输入你的答案
        if '?' in userAnswer:
            userAnswer = userAnswer.replace('?', '')#str.replace(old,new,max)方法,把字符中的old替换成new,且替换不超过max次
        if (userAnswer==result):  # 判断用户结果是否和正确答案相等
            correctNumber += 1
            print("答对了,你真是个天才!")
        else:
            result = str(result)
            print('再想想吧,答案似乎是' + result + '喔!')
        num += 1
    correctNumber = str(correctNumber)
    print("你一共答对" + correctNumber + "道题,共20道题。")

修改后:

将判断结果是否相等部分进行了修改,将用户的输入转换为浮点数再进行比较
        if (float(userAnswer) == float(result)):  # 判断用户结果是否和正确答案相等
            correctNumber += 1
            print("答对了,你真是个天才!")
        else:
            result = str(result)
            print('再想想吧,答案似乎是' + result + '喔!')

最终截图:

将错误一二三完成修正后:最后终于全部通过了。三个测试通过的截图如下:

表达式求值功能(使用测试用例1

循环出题测试:(使用测试用例4

 

 规范化输出测试:(使用测试用例5

梁梦瑶 20190919-4 单元测试_第4张图片

你可能感兴趣的:(梁梦瑶 20190919-4 单元测试)