之前我做過一點python腳本的編寫工作,但是編寫過程中的單元測試是將待測代碼放到一個test.py的測試腳本中,然后在main中執行這個函數,查看執行結果來實現簡單的單元測試。這種方法,不方便單元測試的管理,也不好回歸。有時測試時需要做些預置條件,使的測試代碼看起來雜亂無章。
現在準備重新實現該部分代碼的單元測試與集成測試。在網上看到一個PyUnit的單元測試模塊,以及一套規定好的測試用例編寫規范。現在先將學習到的PyUnit記錄在這個論壇里,便于學習總結。后續如果用PyUnit可以映照學習到的知識回顧一下,進一步理解python的單元測試。
1)pyunit的安裝
python2.1之后的版本,pyunit作為python的一個標準模塊,安裝python之后,就可以直接使用。
如下示:
PythonWin2.7.2(default,Jun122011,15:08:59)[MSCv.150032bit(Intel)]onwin32.
PortionsCopyright1994-2008MarkHammond-see'Help/AboutPythonWin'forfurthercopyrightinformation.
>>>importunittest
>>>
現在2B才使用v2之前的python版本,所以就不再寫pyunit模塊的另外安裝了。
2)測試用例:(下面測試用例與被測代碼均引用網上原文)
#-*-coding:utf-8-*-
importunittest
classWidget:
def__init__(self,size=(40,40)):
self._size=size
defgetSize(self):
returnself._size
defresize(self,width,height):
ifwidth<0orheight<0:
raiseValueError,"illegalsize"
self._size=(width,height)
defdispose(self):
pass
classWidgetTestCase(unittest.TestCase):
defsetUp(self):
self.widget=Widget()
deftearDown(self):
self.widget=None
deftestSize(self):
self.assertEqual(self.widget.getSize(),(40,40))
defsuite():
suite=unittest.TestSuite()
suite.addTest(WidgetTestCase("testSize"))
returnsuite
if__name__=="__main__":
unittest.main(defaultTest='suite')
執行結果(pythonWin下執行結果):
>>>.
----------------------------------------------------------------------
Ran1testin0.000s
OK
很明顯上面的用例測試在使用默認值時,Widget.getSize()的返回值。并將返回值與預期做相等比較,如果相同則測試通過。
以上內容為大家介紹了Python的單元測試---Pyunit介紹,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。