作为开发人员,对写的代码进行单元测试是最基本的
对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,有以下的一些函数可以来使用