unittest是python單元測試框架,又叫做PyUnit。
之所以稱為框架是它代替開發(fā)人員完成了一些調(diào)用、IO等與單元測試無直接關系的支撐代碼,讓開發(fā)人員可以專注與測試用例的編寫,簡化單元測試工作。
單元測試是一種基本的,由開發(fā)人員(而不是測試人員)完成的測試,保證一個程序基本單元的正確性?!皢卧钡母拍钗覀€人理解就類似電子設備中的元器件,一個個元器件(單元)組成了整個電子設備(程序)。而元器件的功能是單一的、確定的,可以在電子設備未完全成型(程序未完全實現(xiàn))之前對其正確性進行測試(即單元測試)。同時,這些元器件是獨立的,可以方便的更換(高內(nèi)聚,低耦合,可以任意重構——只要滿足前面的單元測試)。所以單元測試是測試驅(qū)動開發(fā)、極限編程、敏捷中的重要概念。
一個簡單的例子:
#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.定義一個繼承自unittest.TestCase的測試用例類
3.定義setUp和tearDown,在每個測試用例前后做一些輔助工作。
4.定義測試用例,名字以test開頭。
5.一個測試用例應該只測試一個方面,測試目的和測試內(nèi)容應很明確。主要是調(diào)用assertEqual、assertRaises等斷言方法判斷程序執(zhí)行結(jié)果和預期值是否相符。
6.調(diào)用unittest.main()啟動測試
7.如果測試未通過,會輸出相應的錯誤提示。如果測試全部通過則不顯示任何東西,這時可以添加-v參數(shù)顯示詳細信息。
以上內(nèi)容為大家介紹了python單元測試框架unittest,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。http://m.2667701.com/