なんでもないや~Welcome to my world~

Life is code

软件工程(2019)第二次作业

(一)选择开发工具

  本次团队编程经过讨论我准备使用Eclipse作为开发工具,由于本机已经安装了Eclipse所以下面将Eclipse的界面截图如下:
Eclipse主界面截图

(二)练习自动单元测试技术

  由于本机中已经安装了Python环境并已经安装好了Python的单元测试Unittest,所以这次自动单元测试技术练习使用了Python完成。以下就是练习代码以及测试结果:
  Unittest是基于流行的Java测试框架JUnit的一种Python测试框架,相比于Python之前的单元测试框架Doctest来讲,Unittest更灵活,更强大;可以以结构化方式编写庞大而详尽的测试集。
  下面是一个程序模块my_math的测试实例,我们使用Unittest中的TestCase类编写y一个测试。(my_math模块中包含了一个计算乘积的函数product)

import unittest, my_math

class ProductTestCase(unittest.TestCase):
    def test_integers(self):
        for x in range(-10, 10):
            for y in range(-10, 10):
                p = my_math.product(x, y)
                self.assertEqual(p, x * y, 'Integer multiplication failed')

    def test_floats(self):
        for x in range(-10, 10):
            for y in range(-10, 10):
                x = x / 10
                y = y / 10
                p = my_math.product(x, y)
                self.assertEqual(p, x * y, 'Float multiplication failed')

if __name__=='__main__': unittest.main()

  函数unittest.main负责运行测试,实例化所有的TestCase子类,并运行所有名称以test打头的方法。
  my_math内部的代码如下:

def product(x, y):
    return x * y

  则输出如下:
成功1
  当然,完全正确的结果显然没有什么趣味性,下面我对product函数进行一些修改:

def product(x, y):
    if x == 3 and y == 7:
        return 'An insidious bug has surfaced!'
    else:
        return x * y

  则输出如下,可以看到两个测试结果只有一个通过了:
成功2

posted @ 2019-04-11 21:58  ulyssesgao  阅读(311)  评论(2编辑  收藏  举报