unittest是python單元測(cè)試框架,又叫做PyUnit。
之所以稱(chēng)為框架是它代替開(kāi)發(fā)人員完成了一些調(diào)用、IO等與單元測(cè)試無(wú)直接關(guān)系的支撐代碼,讓開(kāi)發(fā)人員可以專(zhuān)注與測(cè)試用例的編寫(xiě),簡(jiǎn)化單元測(cè)試工作。
單元測(cè)試是一種基本的,由開(kāi)發(fā)人員(而不是測(cè)試人員)完成的測(cè)試,保證一個(gè)程序基本單元的正確性。“單元”的概念我個(gè)人理解就類(lèi)似電子設(shè)備中的元器件,一個(gè)個(gè)元器件(單元)組成了整個(gè)電子設(shè)備(程序)。而元器件的功能是單一的、確定的,可以在電子設(shè)備未完全成型(程序未完全實(shí)現(xiàn))之前對(duì)其正確性進(jìn)行測(cè)試(即單元測(cè)試)。同時(shí),這些元器件是獨(dú)立的,可以方便的更換(高內(nèi)聚,低耦合,可以任意重構(gòu)——只要滿足前面的單元測(cè)試)。所以單元測(cè)試是測(cè)試驅(qū)動(dòng)開(kāi)發(fā)、極限編程、敏捷中的重要概念。
一個(gè)簡(jiǎn)單的例子:
#FileName:ut_target.py
classEqualToZero(Exception):pass
classSplitZero(object):
defsplitzero(self,num):
ifnum>0:
return"numisbiggerthanzero"
elifnum<0:
return"numissmallerthanzero"
else:
raiseEqualToZero
#FileName:utest.py
fromut_targetimportSplitZero,EqualToZero
importunittest
classSzTestCase(unittest.TestCase):
defsetUp(self):
print"teststart"
deftearDown(self):
print"teststop"
deftestSzBig(self):
num=10
sz=SplitZero()
self.assertEqual(sz.splitzero(num),
"numisbiggerthanzero")
deftestSzSmall(self):
num=-10
sz=SplitZero()
self.assertEqual(sz.splitzero(num),
"numissmallerthanzero")
deftestSzEqual(self):
num=0
sz=SplitZero()
self.assertRaises(EqualToZero,sz.splitzero,num)
if__name__=="__main__":
unittest.main()
執(zhí)行pythonutest.py-v
testSzBig(__main__.SzTestCase)...teststart
teststop
ok
testSzEqual(__main__.SzTestCase)...teststart
teststop
ok
testSzSmall(__main__.SzTestCase)...teststart
teststop
ok
----------------------------------------------------------------------
Ran3testsin0.000s
OK
unittest基本使用方法
1.importunittest
2.定義一個(gè)繼承自u(píng)nittest.TestCase的測(cè)試用例類(lèi)
3.定義setUp和tearDown,在每個(gè)測(cè)試用例前后做一些輔助工作。
4.定義測(cè)試用例,名字以test開(kāi)頭。
5.一個(gè)測(cè)試用例應(yīng)該只測(cè)試一個(gè)方面,測(cè)試目的和測(cè)試內(nèi)容應(yīng)很明確。主要是調(diào)用assertEqual、assertRaises等斷言方法判斷程序執(zhí)行結(jié)果和預(yù)期值是否相符。
6.調(diào)用unittest.main()啟動(dòng)測(cè)試
7.如果測(cè)試未通過(guò),會(huì)輸出相應(yīng)的錯(cuò)誤提示。如果測(cè)試全部通過(guò)則不顯示任何東西,這時(shí)可以添加-v參數(shù)顯示詳細(xì)信息。
以上內(nèi)容為大家介紹了python單元測(cè)試框架unittest,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://www.jsszjs.cn/