作为开发人员,对写的代码进行单元测试是最基本的
对python语言来讲,其单元测试的利器是pyUnit, 这个从Python2.1之后的版本中,就已经是自带的了。
下面通过一个基本的例子来讲述如何来使用unittest.
首先是一个简单的功能。
area.py
- class Area:
- def __init__(self,width=100,length=100):
- self._width = width
- self._length = length
- def getWidth(self):
- return self._width
- def getLength(self):
- return self._length
- def getArea(self):
- return self._width*self._length
- def setWidth(self,width):
- if width <= 0:
- raise ValueError,"Illeage Width value"
- self._width = width
- def setLenth(self,length):
- if length <= 0:
- raise ValueError,"Illeage Length value"
- self._length = length
ut_area.py
- from area import Area
- import unittest
- class AreaTestCase(unittest.TestCase):
- def setUp(self):
- self.area = Area()
- def tearDown(self):
- self.area = None
- def testArea(self):
- self.assertEqual(self.area.getArea(),10000)
- def testWidth(self):
- self.area.setWidth(10)
- self.assertEqual(self.area.getWidth(),10)
- def testLength(self):
- self.area.setLenth(10)
- self.assertEqual(self.area.getLength(),10)
- if __name__ == "__main__":
- unittest.main()
我们来看一下,单元测试的结果。
单元测试也可以以如下的方法来实现
首先我们的测试类要继承于unittest.TestCase. 如果采用动态测试的方法可以为每个需要测试的方法编写测试方法,使用assertEqual( , ). 然后把我们的测试都放到unittest.TestSuite()容器中,最后使用 unittest.TextTestRunner().run(suite)方法自动测试。
- suite = unittest.TestSuite()
- suite.addTest(AreaTestCase("testArea"))
- suite.addTest(AreaTestCase("testWidth"))
- suite.addTest(AreaTestCase("testLength"))
- runner = unittest.TextTestRunner()
- runner.run(suite)
- print "#"*80
- unittest.main()
我们把两种方法进行了对比,结果是一样的,
对TestCase,有以下的一些函数可以来使用