之前我做過(guò)一點(diǎn)python腳本的編寫(xiě)工作,但是編寫(xiě)過(guò)程中的單元測(cè)試是將待測(cè)代碼放到一個(gè)test.py的測(cè)試腳本中,然后在main中執(zhí)行這個(gè)函數(shù),查看執(zhí)行結(jié)果來(lái)實(shí)現(xiàn)簡(jiǎn)單的單元測(cè)試。這種方法,不方便單元測(cè)試的管理,也不好回歸。有時(shí)測(cè)試時(shí)需要做些預(yù)置條件,使的測(cè)試代碼看起來(lái)雜亂無(wú)章。
現(xiàn)在準(zhǔn)備重新實(shí)現(xiàn)該部分代碼的單元測(cè)試與集成測(cè)試。在網(wǎng)上看到一個(gè)PyUnit的單元測(cè)試模塊,以及一套規(guī)定好的測(cè)試用例編寫(xiě)規(guī)范。現(xiàn)在先將學(xué)習(xí)到的PyUnit記錄在這個(gè)論壇里,便于學(xué)習(xí)總結(jié)。后續(xù)如果用PyUnit可以映照學(xué)習(xí)到的知識(shí)回顧一下,進(jìn)一步理解python的單元測(cè)試。
1)pyunit的安裝
python2.1之后的版本,pyunit作為python的一個(gè)標(biāo)準(zhǔn)模塊,安裝python之后,就可以直接使用。
如下示:
PythonWin2.7.2(default,Jun122011,15:08:59)[MSCv.150032bit(Intel)]onwin32.
PortionsCopyright1994-2008MarkHammond-see'Help/AboutPythonWin'forfurthercopyrightinformation.
>>>importunittest
>>>
現(xiàn)在2B才使用v2之前的python版本,所以就不再寫(xiě)pyunit模塊的另外安裝了。
2)測(cè)試用例:(下面測(cè)試用例與被測(cè)代碼均引用網(wǎng)上原文)
#-*-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')
執(zhí)行結(jié)果(pythonWin下執(zhí)行結(jié)果):
>>>.
----------------------------------------------------------------------
Ran1testin0.000s
OK
很明顯上面的用例測(cè)試在使用默認(rèn)值時(shí),Widget.getSize()的返回值。并將返回值與預(yù)期做相等比較,如果相同則測(cè)試通過(guò)。
以上內(nèi)容為大家介紹了Python的單元測(cè)試---Pyunit介紹,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。