• 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

  • 相关阅读:
    BZOJ 1202: [HNOI2005]狡猾的商人( 差分约束 )
    BZOJ 1800: [Ahoi2009]fly 飞行棋( 枚举 )
    BZOJ 2006: [NOI2010]超级钢琴( RMQ + 堆 )
    BZOJ 1029: [JSOI2007]建筑抢修( 贪心 )
    FZU 2233 ~APTX4869 贪心+并查集
    FZU2232 炉石传说 最大匹配
    FZU 2237 中位数 主席树 树上k大
    CodeForcesGym 100753B Bounty Hunter II 二分图最小路径覆盖
    NOIP2010关押罪犯 二分+二染色
    POJ2236 Wireless Network 并查集
  • 原文地址:https://www.cnblogs.com/amancer1151/p/13733808.html
Copyright © 2020-2023  润新知