溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python unittest框架的用法

發布時間:2020-08-04 10:34:37 來源:億速云 閱讀:134 作者:小豬 欄目:開發技術

這篇文章主要講解了Python unittest框架的用法,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

操作步驟

  • 導入框架,import unitest
  • 測試類必須繼承類:.class 類名(unittest.TestCase):
  • 在類中所有定義testXXX(區分大小寫)開頭的函數都是可執行的測試用例
  • 鉤子方法setUp(每個測試用例前執行)、tearDown(每個測試用例后執行)
  • 執行用例unitest.main()
  • 斷言

常用斷言

方法等價于描述
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 ba是否包含b
assertNotIn(a,b)a not in ba是否不包含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框架的用法有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女