zhangli-s 发表于 2017-5-5 08:03:43

简单使用Python Unittest写单元测试用例(转)

简单使用Python Unittest写单元测试用例

  作为开发人员,对写的代码进行单元测试是最基本的
  对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()  
  我们来看一下,单元测试的结果。
http://hiphotos.baidu.com/hellosim/pic/item/1e296b510923dd54ea756221d109b3de9c824831.jpg
  单元测试也可以以如下的方法来实现 
  首先我们的测试类要继承于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()  
  我们把两种方法进行了对比,结果是一样的,
http://hiphotos.baidu.com/hellosim/pic/item/dc19ff51564e92586f3b43a79c82d158ccbf4e28.jpg
  对TestCase,有以下的一些函数可以来使用
http://hiphotos.baidu.com/hellosim/pic/item/086e744b9258d1090cec6cfbd158ccbf6c814d28.jpg
  官方资料:http://docs.python.org/library/unittest.html
页: [1]
查看完整版本: 简单使用Python Unittest写单元测试用例(转)