20200924-3 单元测试,结对

此作业的要求参见:https://edu.cnblogs.com/campus/nenu/2020Fall/homework/11243

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

功能1、2 测试用例

编号 测试用例 预期结果
1 输入f4 随机生成表达式,在下一行输出提示 ?
2 输入正确答案 答对了,你真是个天才!
3 输入错误答案 再想想吧,答案似乎是x

 

 

 

 

 

功能1测试代码:

def test_ques(self):
    print("单元测试开始")
    question = input("请输入四则运算表达式:")
    answer = input("请输入正确答案: ")
    self.assertEqual(answer,f4.ques(ques = question))
    print("单元测试结束!")

功能1运行结果:

功能2测试代码:

def test_result(self):
    print("单元测试开始")
    self.assertEqual(None,f4.result())
    print("单元测试结束!")

功能2运行结果:

 

功能3,4测试用例

编号 测试用例 预期结果
1 输入f4 -c test 题目数量必须是正整数
2 输入f4 -c -300 题目数量必须是正整数
3 输入 f4 -c -3.5 题目数量必须是正整数
4 输入 f4 -c 3 输出表达式和小数计算结果并输出到data.txt
5 输入 f4 -c 3  输出表达式和分数计算结果并输出到data.txt

 

 

 

 

 

 

 

 

功能3,4测试代码:

def test_command_input(self):
    print("单元测试开始")
    #输入参数
    number = input("请输入有效参数:")
    self.assertEqual(f4.command_input(number),0)
    print("单元测试结束!")

功能3运行结果:

功能4运行结果:

 

 

 要求2 在博客报告测试用例全部fail到全部pass 的过程,报告事实 (fail到修改代码或者测试用例,到pass) 以及收获。 除了最初的框架,测试用例中存在一次性pass没有经过fail的,也报告一次性通过,给出如此优秀地实现了这部分功能的代码。

功能1:

将用eval()函数获取到的结果转为int型,即if float(res) == float(ans),因计算结果可能是小数,会使得输入与输出无法比较。

 后变为if float(res) == float(ans),结果不能空着否则仍然报错。

最后修改为用字符串接收,通过测试。

功能2:

开始没有考虑到括号匹配,只是让括号随机生成,结果报错。

 后添加如下代码对括号进行匹配后,通过测试。

#括号匹配
    if left1 == 0:
        left2 = 1
        left3 = 1
        if right1 == 2:
            right2 = 1
            right3 = 1
        else:
            right2 = 2
            right3 = 1
    else:
        if left2 == 0:
            left3 = 1
            right1 = 1
            if right2 == 2:
                right3 = 1
            else:
                right3 = 2
        else:
            left3 = 0
            right1 = 1
            right2 = 1
            right3 = 2

功能4:

遍历计算结果将分子、分母分别存储到两个字典中后,在取出时,将分子和分母弄颠倒,虽然输出计算结果,但结果不对。

 将分子、分母转化为十进制的过程中,取出的第一个数是个位数,应该乘以10的0次方,因逻辑搞错,导致运算结果不对。

 一次性通过的主要代码:

#命令行输入题目数目
def command_input(num):
    data = open('data.txt','w+')
    if num.isdigit():
        for i in range(int(num)):
            question = ques()
            question1 = question + '='
            res = Fraction(eval(question)).limit_denominator(100000)
            print('{:<50}{:<25}'.format(question1,traversal_dist(str(res))))
            print('{:<50}{:<25}'.format(question1,traversal_dist(str(res))),file = data)
    else:
        print("题目数量必须是正整数。")

要求3 使用coding.net做版本控制。checkin 前要求清理临时文件、可执行程序,通常执行 build-clean可以达到效果。

coding.net中地址:https://e.coding.net/amancer/calculate/calculate.git

posted @ 2020-10-07 17:57  amancer  阅读(53)  评论(0编辑  收藏  举报