python unittest單元測驗框架
unittest單元測驗框架的作用
unittest單元測驗框架就是自動化測驗中為了便于維護和管理測驗用例的,能夠生成測驗報告和進行測驗統計的一個框架
unittest單元測驗框架的4個組件
1.測驗用例
一個函式(必須以test為前綴命名,否則會被視為普通函式)就是一個測驗用例
2.測驗套件
一堆測驗用例的集合
3.測驗執行器
用來執行單元測驗,并給出測驗報告
4.測驗韌體
(1)setUp(self),每個測驗用例執行前都會呼叫,在setUp(self)之前還可以添加一個類方法:
def setUpClass(cls):它會在所有用例前執行一次(也在setUp之前執行),不管有多少用例,都只執行一次,在這個類方法上必須添加裝飾器@classmethod
(2)tearDown(self),每個測驗用例執行完畢后都會呼叫,在teatDown(self)之前還可以添加一個類方法:
def teatDownClass(cls):它會在所有用例執行完畢后一次(也在tearDown之后執行),在這個類方法上必須添加裝飾器@classmethod
如果沒有setUpClass和tearDownClass,測驗類中一般將setUp()和tearDown()寫在第一,第二位,
如果有,那么類方法要寫在前面,如圖:

撰寫測驗用例
普通類(要被測驗的類):

再寫測驗用例的時候一般都是放在測驗類中,如:


這里的TestCase類是所有測驗類的基類,測驗類都要繼承這個類
注意基類中已有建構式,這里不需要你寫
測驗用例(即以test為前綴命名的函式)一般不允許自定義引數
執行測驗用例
執行測驗用例一般有2種方法:
1.使用入口函式unittest.main()
2.
(1)另外建一個py檔案
(2)在該檔案中,使用unittest.TestSuite()新建測驗套件
(3)用addTest()方法添加測驗用例到套件,格式如上圖
(4)使用unittest.TextTestRunner()安裝測驗執行器
(5)使用run()方法執行測驗套件
ddt資料驅動
使多組資料可以在一個測驗用例中使用

經過unpack解包的資料會被分開為多組,然后每一組資料有幾個引數就相應傳入用例中,
如果不給unpack,傳入多組資料,會造成只將第一組資料整體傳給用例的第一個引數,后面的引數會接收不到引數而報錯(E),每有一組資料,會報錯一次
@ddt.data(*a)
*表示可變引數,即可以傳多個引數
@ddt.data(**a)
**表示關鍵字引數
makeSuite用法詳解
makeSuite方法說白了就是將一個類中的所有測驗用例打包成一個集合,它的引數就是類名
用法
1.作為TestSuite的引數
當作為TestSuite的引數時,意思就是說我makeSuite打包好的用例給TestSuite,讓TestSuite用這些用例來生成套件(所以說此時的套件已經有了用例,不需要在用addTest來添加)
import unittest
class MyTest(unittest.TestCase):
def test_01(self):
print("111")
def test_02(self):
print("222")
t = unittest.makeSuite(MyTest)
#注意:上面一行就是將測驗類MyTest中的所有用例打包
#(這里只是打包,還沒有形成套件!!!)
suit = unittest.TestSuite(t)
#這一行才是將打完包的測驗用例生成測驗套件
#注意這個時候測驗套件suit里面已經有了測驗用例了,
#不需要通過addTest方法再添加用例了
my_run = unittest.TextTestRunner()#生成測驗執行器
my_run.run(suit)#執行套件suit
2.作為addTest方法的引數
用makeSuite打包好的測驗用例還是測驗用例,放在addTest里面直接添加用例到套件就行了
import unittest
class MyTest(unittest.TestCase):
def test_01(self):
print("111")
def test_02(self):
print("222")
#當makeSuite作為addTest的引數時,那么我們就要先創建測驗套件了
suit = unittest.TestSuite()#新建測驗套件
suit.addTest(unittest.makeSuite(MyTest))
#上面就是添加測驗用例,
#注意這里的用例是用makeSuite打包的測驗類MyTest的所有用例
myrun = unittest.TextTestRunner()
myrun.run(suit)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/244672.html
標籤:python
上一篇:python爬蟲入門之Selenium和Matplotlib初體驗
下一篇:用Python寫一個天天酷跑
