Python unittest框架操作實(shí)例解析
操作步驟
- 導(dǎo)入框架,import unitest
- 測(cè)試類必須繼承類:.class 類名(unittest.TestCase):
- 在類中所有定義testXXX(區(qū)分大小寫(xiě))開(kāi)頭的函數(shù)都是可執(zhí)行的測(cè)試用例
- 鉤子方法setUp(每個(gè)測(cè)試用例前執(zhí)行)、tearDown(每個(gè)測(cè)試用例后執(zhí)行)
- 執(zhí)行用例unitest.main()
- 斷言
常用斷言
方法 | 等價(jià)于 | 描述 |
---|---|---|
assertEqual(a,b) | a==b | 值是否相等 |
aassertNotEqual(a,b) | a!=b | 值是否不相等 |
aasserIs(a,b) | a is b | 值是否相同 |
aassertIsNot(a,b) | a is not b | 值是否不同 |
assertIn(a,b) | a in b | a是否包含b |
assertNotIn(a,b) | a not in b | a是否不包含b |
ssertTrue(a) | bool(a) is true | 是否為真 |
assertFalse(a) | bool(a)is false | 是否為假 |
assertIsNone(a) | a is None | 是否為空 |
assertIsNotNone(a) | a is None | 是否不為空 |
assertIsInstance(a,b) | Instance(a,b) | a與b的數(shù)據(jù)類型一樣 |
assertNotIsInstance(a) | not Instance(a,b) | a與b的數(shù)據(jù)類型不一樣 |
舉例說(shuō)明
#!/usr/bin/python3 # encoding:utf-8 ''' Created on 2019-10-12 @author: EDZ ''' #!/usr/bin/python3 # encoding:utf-8 import unittest #繼承unittest基類 class un_test(unittest.TestCase): def setUp(self): print("鉤子方法,每個(gè)用例執(zhí)行前執(zhí)行") def tearDown(self): print("鉤子方法,每個(gè)用例執(zhí)行后執(zhí)行") #必須testXXX命名函數(shù)才會(huì)被執(zhí)行 def test_Equal(self): print('1.assertEqual值相同') a='中國(guó)' b='中國(guó)' self.assertEqual(a,b) def test_Is(self): a='中國(guó)' b='中國(guó)' print('2.assertIs值相同') self.assertIs(a,b) def test_Instance(self): a = 'aaa' b = [1,2,3,4] print(type(a),type(b),"3.數(shù)據(jù)類型不相等") self.assertNotIsInstance(type(a),type(b)) def cf(self,a,b): return a/b def test_rasi(self): print('4.1/0拋出異常') self.assertRaises(ZeroDivisionError,self.cf,1,0) if __name__=="__main__": #unittest執(zhí)行本類全部testXXX命名的測(cè)試用例 unittest.main() #-----------下面為特殊加載方式------------------- ''' #通過(guò)文件模塊加載(loadTestsFromModule) suite = unittest.TestSuite() loader = unittest.TestLoader()#用例加載器 #文件模塊名,例如有文件moku.py 第一步:import moku loader.loadTestsFromModule(文件名) suite.addTest(loader.loadTestsFromModule(moku)) #通過(guò)測(cè)試類來(lái)加載(loadTestsFromTestCase) suite = unittest.TestSuite() loader = unittest.TestLoader()#用例加載器 #例如有文件moku.py 其中有類名classT 第一步導(dǎo)入類:from moku import classT (loader.loadTestsFromTestCase(classT))#類名 suite.addTest(loader.loadTestsFromTestCase(un_test))#如果類在本文件模塊內(nèi)直接加載。 #一個(gè)一個(gè)添加 suite = unittest.TestSuite() suite.addTest(un_test('test_Equal'))#(類名('函數(shù)')) #測(cè)試用例數(shù)較多時(shí),采用defaultTestLoader.discover()方式 suite = unittest.defaultTestLoader.discover('./',pattern='y*.py', top_level_dir=None) #1、因?yàn)閡nittest中規(guī)定,測(cè)試用例必須test開(kāi)頭,所以discover中的pattern格式才是test*.py #2、start_dir是存放測(cè)試用例的目錄 #pattern='test*.py':表示用例文件名的匹配原則。此處匹配以“test”開(kāi)頭的.py 類型的文件,* 表示任意多個(gè)字符 #top_level_dir= None 測(cè)試模塊的頂層目錄,如果沒(méi)有頂層目錄,默認(rèn)為None runner = unittest.TextTestRunner(verbosity=2) runner.run(suite) 這里的verbosity是一個(gè)選項(xiàng),表示測(cè)試結(jié)果的信息復(fù)雜度,有三個(gè)值 0 (靜默模式): 你只能獲得總的測(cè)試用例數(shù)和總的結(jié)果 比如 總共100個(gè) 失敗20 成功80 1 (默認(rèn)模式): 非常類似靜默模式 只是在每個(gè)成功的用例前面有個(gè)“.” 每個(gè)失敗的用例前面有個(gè) “F” 2 (詳細(xì)模式):測(cè)試結(jié)果會(huì)顯示每個(gè)測(cè)試用例的所有相關(guān)的信息 并且 你在命令行里加入不同的參數(shù)可以起到一樣的效果 加入 --quiet 參數(shù) 等效于 verbosity=0 加入--verbose參數(shù)等效于 verbosity=2 什么都不加就是 verbosity=1</pre> '''
運(yùn)行結(jié)果
鉤子方法,每個(gè)用例執(zhí)行前執(zhí)行
1.assertEqual值相同
鉤子方法,每個(gè)用例執(zhí)行后執(zhí)行
鉤子方法,每個(gè)用例執(zhí)行前執(zhí)行
<class 'str'> <class 'list'> 3.數(shù)據(jù)類型不相等
鉤子方法,每個(gè)用例執(zhí)行后執(zhí)行
鉤子方法,每個(gè)用例執(zhí)行前執(zhí)行
2.assertIs值相同
鉤子方法,每個(gè)用例執(zhí)行后執(zhí)行
鉤子方法,每個(gè)用例執(zhí)行前執(zhí)行
4.1/0拋出異常
鉤子方法,每個(gè)用例執(zhí)行后執(zhí)行
Ran 4 tests in 0.001s
OK
說(shuō)明:鉤子方法每個(gè)用例都執(zhí)行,Ran 4 表示成功執(zhí)行4個(gè)testXXX的測(cè)試用例
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python 測(cè)試框架unittest和pytest的優(yōu)劣
- Python自動(dòng)化之UnitTest框架實(shí)戰(zhàn)記錄
- Python unittest單元測(cè)試框架實(shí)現(xiàn)參數(shù)化
- Python基于paramunittest模塊實(shí)現(xiàn)excl參數(shù)化
- Python unittest單元測(cè)試框架及斷言方法
- Python unittest 自動(dòng)識(shí)別并執(zhí)行測(cè)試用例方式
- Python unittest工作原理和使用過(guò)程解析
- Python Unittest原理及基本使用方法
相關(guān)文章
Python中optparser庫(kù)用法實(shí)例詳解
這篇文章主要介紹了Python中optparser庫(kù)用法實(shí)例詳解,介紹了optparser的引入,初始化等相關(guān)內(nèi)容,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01如何將python項(xiàng)目部署在一臺(tái)服務(wù)器上
服務(wù)器less技術(shù)是一種無(wú)需管理服務(wù)器即可運(yùn)行應(yīng)用程序的方法,最流行的服務(wù)器less平臺(tái)是AWS Lambda,這篇文章主要介紹了如何將python項(xiàng)目部署在一臺(tái)服務(wù)器上,需要的朋友可以參考下2023-10-10Python3實(shí)現(xiàn)發(fā)送QQ郵件功能(html)
這篇文章主要為大家詳細(xì)介紹了Python3實(shí)現(xiàn)發(fā)送QQ郵件功能,html格式的qq郵件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12使用Python實(shí)現(xiàn)炫酷的數(shù)據(jù)動(dòng)態(tài)圖大全
數(shù)據(jù)可視化是通過(guò)圖形、圖表、地圖等可視元素將數(shù)據(jù)呈現(xiàn)出來(lái),以便更容易理解、分析和解釋,它是將抽象的數(shù)據(jù)轉(zhuǎn)化為直觀形象的過(guò)程,本文給大家介紹了使用Python實(shí)現(xiàn)炫酷的數(shù)據(jù)動(dòng)態(tài)圖大全,需要的朋友可以參考下2024-06-06