python的單元測試模塊——unittest

如今的軟件開發過程當中,測試每每關係到一個項目的成敗。因此,咱們很是有必要學習如何測試本身所編寫的代碼。那麼,python可以在這方面作些什麼呢?python

             首先,咱們編寫一個本身的類文件。程序員

                        例1. widget.pyapp

[python]  view plain copy
  1. class Widget:  
  2.     def __init__(self,size=(40,40)):  
  3.         self._size=size  
  4.     def getSize(self):  
  5.         return self._size  
  6.     def resize(self,width,height):  
  7.         self._size=(width,height)  
  8.     def dispose(self):  
  9.         pass  

            採用手工方式進行單元測試:
[python]  view plain copy
  1. #-*-coding:UTF-8-*-  
  2. #python的測試模塊  
  3. from widget import Widget  
  4. class TestWidget:  
  5.     def testSize(self):  
  6.         expectedSize=(40,40)  
  7.         widget=Widget()  
  8.         if widget.getSize()==expectedSize:  
  9.             print "test [Widget]:getSize works perfected!"  
  10.         else:  
  11.             print "test [Widget]:getSize doesn't work!"  
  12.   
  13. #測試  
  14. if __name__=='__main__':  
  15.     myTest=TestWidget()  
  16.     myTest.testSize()  


手工編寫的這種測試方法存在不少問題:框架

1.測試程序的寫法沒有必定的規範能夠遵循,十個程序員可能寫出徹底不一樣的測試程序來單元測試

2.每一個程序員若是都有本身不一樣的測試類的方法,光維護這些被測試的類都夠麻煩了,更不用說維護測試類。學習

3.測試用的代碼可能比程序自己還多,大大加大了程序員的工做量。測試

 因此,基於以上幾點,python推出了它本身的一個框架來幫助咱們完成這些功能——PyUnitui

使用python的PyUnit測試框架:spa

[python]  view plain copy
  1. #-*-coding:UTF-8-*-  
  2. from widget import Widget  
  3. import unittest  
  4. class  WidgetTestCase(unittest.TestCase):  
  5.     def setUp(self):  
  6.         self.widget=Widget()  
  7.     def tearDown(self):  
  8.         self.widget=None  
  9.     def testSize(self):  
  10.         self.assertEqual(self.widget.getSize(),(40,40))  
  11.   
  12. #構造測試集  
  13. def suite():  
  14.     suite=unittest.TestSuite()  
  15.     suite.addTest(WidgetTestCase("testSize"))  
  16.     return suite  
  17. #測試  
  18. if __name__=="__main__":  
  19.     unittest.main(defaultTest='suite')  


在採用這個單元測試框架後,使得全部python程序員均可以使用一樣的單元測試方法,測試過程成爲了一個有序的行爲。這就是這個框架所帶來的最大的好處。.net

相關文章
相關標籤/搜索