20190919-4 单元测试,结对

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

结对伙伴:韩昊

• 要求1 测试用例。

功能1

功能2

功能3 

扫描二维码关注公众号,回复: 7344176 查看本文章

• 要求2 详细测试报告

功能1

(一)用例编号1,2,3:

起初输入f4,打印出现表达式后,无“?”,按照要求需要换行输出“?”,且在“?”之后输入表达式答案,于是尝试修改代码为:

print(generator + '=\n?')

不过这样使得“?”输出后,紧接着又输出了换行,就像这样:

如何让输出不自动换行呢?经查代码,一个关键改变是:

print(generator + '=\n?', end="")

最终,完美解决

(二)用例编号4

加入一个暴躁的老师或者学生,由于收到的表达式超纲了,愤怒的他没输入答案,直接按下了回车,结果会怎样呢?

看到这个我猜他会更愤怒,甚至还会把电脑砸了,我们要防止这样的事发生,那该怎么办呢?切题吧!

while i < num:
    mid_experison = Exp_Generator.Generator()
    generator = mid_experison.generate()
    print(generator + '=\n?', end="")
    suffix_expression = middle_to_after(generator)
    value = cal_suffix_exp_value(suffix_expression)
    answer = input()
    if answer.strip() == '':
        print('仿佛你拒绝回答了这道题,没关系,我们换一道,加油')
        continue
    if '?' in answer:
        answer = answer.replace('?', '')
    print_result(float(answer), value)
    i += 1

最后输出是这样的:

 功能2

(一)用例编号7

表达式转换成逆波兰式功能测试成功:

 TDD(UnitTest)关键代码:

# 表达式转换成逆波兰式功能测试
    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')

(二)用例编号8

不含括号表达式计算测试:

 TDD(UnitTest)关键代码:

# 表达式求值功能测试(不含括号)
    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')

(三)用例编号9

含括号表达式计算测试:

  TDD(UnitTest)关键代码:

# 表达式求值功能测试(含括号)
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')

整体单元测试:

 功能3

(一)用例编号10、11、12

运行出错,是因为程序要根据用户输入的数字,来决定要输出的表达式的行数,而python默认从终端读进来的参数是str类型,所以需要将str类型的参数转换为int类型才可以利用到循环控制中。

# 功能三输出一行计算表达式及结果
def print_exp_result(num):
    i = 0
    num = int(num)
    while i < num:
        generate = Exp_Generator.Generator()
        mid_experision = generate.generate()
        suffix_expression = middle_to_after(mid_experision)
        value = cal_suffix_exp_value(suffix_expression)
        mid_experision += '='
        print('%-15s %-15s' % (mid_experision, value))
        i += 1

修改成功后:

 收获

接触python时间不长,第一次用python写如此规模的程序,感受到了python语法如此简洁且资源库如此强大带来的方便。不过在本次编程由fail到pass过程中,之所以fail的原因,大部分还是对语言本身理解掌握不够、需求分析不彻底不充分,最大的收获是,问题驱动下的学习方式,比单纯为了学技术而学技术,更实际可靠。

• 要求4 版本控制。

代码地址:[https://e.coding.net/secret/ASETest1_3.git]

猜你喜欢

转载自www.cnblogs.com/liuxp775/p/11574505.html