如今的軟件開發過程當中,測試每每關係到一個項目的成敗。因此,咱們很是有必要學習如何測試本身所編寫的代碼。那麼,python可以在這方面作些什麼呢?python
首先,咱們編寫一個本身的類文件。程序員
例1. widget.pyapp
- class Widget:
- def __init__(self,size=(40,40)):
- self._size=size
- def getSize(self):
- return self._size
- def resize(self,width,height):
- self._size=(width,height)
- def dispose(self):
- pass
採用手工方式進行單元測試:
- #-*-coding:UTF-8-*-
- #python的測試模塊
- from widget import Widget
- class TestWidget:
- def testSize(self):
- expectedSize=(40,40)
- widget=Widget()
- if widget.getSize()==expectedSize:
- print "test [Widget]:getSize works perfected!"
- else:
- print "test [Widget]:getSize doesn't work!"
-
- #測試
- if __name__=='__main__':
- myTest=TestWidget()
- myTest.testSize()
手工編寫的這種測試方法存在不少問題:框架
1.測試程序的寫法沒有必定的規範能夠遵循,十個程序員可能寫出徹底不一樣的測試程序來單元測試
2.每一個程序員若是都有本身不一樣的測試類的方法,光維護這些被測試的類都夠麻煩了,更不用說維護測試類。學習
3.測試用的代碼可能比程序自己還多,大大加大了程序員的工做量。測試
因此,基於以上幾點,python推出了它本身的一個框架來幫助咱們完成這些功能——PyUnitui
使用python的PyUnit測試框架:spa
- #-*-coding:UTF-8-*-
- from widget import Widget
- import unittest
- class WidgetTestCase(unittest.TestCase):
- def setUp(self):
- self.widget=Widget()
- def tearDown(self):
- self.widget=None
- def testSize(self):
- self.assertEqual(self.widget.getSize(),(40,40))
-
- #構造測試集
- def suite():
- suite=unittest.TestSuite()
- suite.addTest(WidgetTestCase("testSize"))
- return suite
- #測試
- if __name__=="__main__":
- unittest.main(defaultTest='suite')
在採用這個單元測試框架後,使得全部python程序員均可以使用一樣的單元測試方法,測試過程成爲了一個有序的行爲。這就是這個框架所帶來的最大的好處。.net