(一)选择开发工具
本次团队编程经过讨论我准备使用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
则输出如下:
当然,完全正确的结果显然没有什么趣味性,下面我对product函数进行一些修改:
def product(x, y):
if x == 3 and y == 7:
return 'An insidious bug has surfaced!'
else:
return x * y
则输出如下,可以看到两个测试结果只有一个通过了: