這篇文章主要講解了Python unittest框架的用法,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。
操作步驟
常用斷言
方法 | 等價于 | 描述 |
---|---|---|
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的數據類型一樣 |
assertNotIsInstance(a) | not Instance(a,b) | a與b的數據類型不一樣 |
舉例說明
#!/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("鉤子方法,每個用例執行前執行") def tearDown(self): print("鉤子方法,每個用例執行后執行") #必須testXXX命名函數才會被執行 def test_Equal(self): print('1.assertEqual值相同') a='中國' b='中國' self.assertEqual(a,b) def test_Is(self): a='中國' b='中國' print('2.assertIs值相同') self.assertIs(a,b) def test_Instance(self): a = 'aaa' b = [1,2,3,4] print(type(a),type(b),"3.數據類型不相等") 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執行本類全部testXXX命名的測試用例 unittest.main() #-----------下面為特殊加載方式------------------- ''' #通過文件模塊加載(loadTestsFromModule) suite = unittest.TestSuite() loader = unittest.TestLoader()#用例加載器 #文件模塊名,例如有文件moku.py 第一步:import moku loader.loadTestsFromModule(文件名) suite.addTest(loader.loadTestsFromModule(moku)) #通過測試類來加載(loadTestsFromTestCase) suite = unittest.TestSuite() loader = unittest.TestLoader()#用例加載器 #例如有文件moku.py 其中有類名classT 第一步導入類:from moku import classT (loader.loadTestsFromTestCase(classT))#類名 suite.addTest(loader.loadTestsFromTestCase(un_test))#如果類在本文件模塊內直接加載。 #一個一個添加 suite = unittest.TestSuite() suite.addTest(un_test('test_Equal'))#(類名('函數')) #測試用例數較多時,采用defaultTestLoader.discover()方式 suite = unittest.defaultTestLoader.discover('./',pattern='y*.py', top_level_dir=None) #1、因為unittest中規定,測試用例必須test開頭,所以discover中的pattern格式才是test*.py #2、start_dir是存放測試用例的目錄 #pattern='test*.py':表示用例文件名的匹配原則。此處匹配以“test”開頭的.py 類型的文件,* 表示任意多個字符 #top_level_dir= None 測試模塊的頂層目錄,如果沒有頂層目錄,默認為None runner = unittest.TextTestRunner(verbosity=2) runner.run(suite) 這里的verbosity是一個選項,表示測試結果的信息復雜度,有三個值 0 (靜默模式): 你只能獲得總的測試用例數和總的結果 比如 總共100個 失敗20 成功80 1 (默認模式): 非常類似靜默模式 只是在每個成功的用例前面有個“.” 每個失敗的用例前面有個 “F” 2 (詳細模式):測試結果會顯示每個測試用例的所有相關的信息 并且 你在命令行里加入不同的參數可以起到一樣的效果 加入 --quiet 參數 等效于 verbosity=0 加入--verbose參數等效于 verbosity=2 什么都不加就是 verbosity=1</pre> '''
運行結果
鉤子方法,每個用例執行前執行
1.assertEqual值相同
鉤子方法,每個用例執行后執行
鉤子方法,每個用例執行前執行
<class 'str'> <class 'list'> 3.數據類型不相等
鉤子方法,每個用例執行后執行
鉤子方法,每個用例執行前執行
2.assertIs值相同
鉤子方法,每個用例執行后執行
鉤子方法,每個用例執行前執行
4.1/0拋出異常
鉤子方法,每個用例執行后執行
Ran 4 tests in 0.001s
OK
說明:鉤子方法每個用例都執行,Ran 4 表示成功執行4個testXXX的測試用例
看完上述內容,是不是對Python unittest框架的用法有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。