1.裝飾器
#裝飾器的官方定義: 裝飾器本質上是一個Python函式(其實就是閉包),它可以讓其他函式在不需要做任何代碼變動的前提下增加額外功能,裝飾器的回傳值也是一個函式物件,裝飾器用于有以下場景,比如:插入日志、性能測驗、事務處理、快取、權限校驗等場景,
2.ddt
import unittest #引入ddt庫 from ddt import ddt,data,unpack test_data = [{"name":"張三"},2] @ddt#裝飾測驗類 class DemoCase(unittest.TestCase): @data(test_data)#裝飾函式 def test_jia(self,item): print(item) def test_jian(self): pass if __name__ == '__main__': unittest.main()
運行結果:
plugins: html-3.2.0, metadata-2.0.4collected 2 items demo.py .[{'name': '張三'}, 2] . [100%] ============================== 2 passed in 0.04s ============================== Process finished with exit code 0
3.ddt脫外套
import unittest #引入ddt庫 from ddt import ddt,data,unpack test_data = [{"name":"張三"},2] @ddt#裝飾測驗類 class DemoCase(unittest.TestCase): @data(*test_data)#裝飾函式,*test_data脫外套,根據脫外套后的資料執行次數 def test_jia(self,item): print(item) if __name__ == '__main__': unittest.main()
運行結果:
plugins: html-3.2.0, metadata-2.0.4collected 2 items demo.py .{'name': '張三'} .2 [100%] ============================== 2 passed in 0.04s ============================== Process finished with exit code 0
4.ddt中的@unpack
import unittest #引入ddt庫 from ddt import ddt,data,unpack test_data = [[2,6],[9,1000]] @ddt#裝飾測驗類 class DemoCase(unittest.TestCase): @data(*test_data)#裝飾函式,*test_data脫外套,根據脫外套后的資料執行次數 @unpack def test_jia(self,a,b): print("a: ",a) print("b: ",b) if __name__ == '__main__': unittest.main()
運行結果: plugins: html-3.2.0, metadata-2.0.4collected 2 items demo.py
.a: 2 b: 6 .a: 9 b: 1000 [100%] ============================== 2 passed in 0.04s ==============================
5.ddt+openpyxl引數化實作
import unittest #引入ddt庫 from ddt import ddt,data,unpack from test01.doexcel import DoExcel
#引入倉庫 from openpyxl import load_workbook class DoExcel(): def __init__(self,file,sheet): self.file=file self.sheet=sheet def return_excel_value(self): wb = load_workbook(self.file)#打開excel sheet_content = wb[self.sheet]#定位sheet作業博 data_list = []#串列用于存盤測驗資料 for n in range(2,sheet_content.max_row+1):#行,第一行是標題,所以從第二行開始 data_dict = {}#字典用于存盤每組測驗資料 for m in range(2,sheet_content.max_column+1): data_dict["method"]=sheet_content.cell(n,2).value data_dict["url"] = sheet_content.cell(n, 3).value data_dict["data"] = eval(sheet_content.cell(n, 4).value)#eval()將資料型別還原 data_dict["expect"] = sheet_content.cell(n, 5).value data_list.append(data_dict)#將字典存盤到list return data_listDoExcel類代碼
test_data = DoExcel("C:\\Users\\Administrator\\Desktop\\testdemo.xlsx","s1").return_excel_value()#[{},{},{}] @ddt#裝飾測驗類 class DemoCase(unittest.TestCase): @data(*test_data)#裝飾函式,*test_data脫外套,根據脫外套后的資料執行次數 def test_jia(self,item): print(item["method"],item["url"],item["data"],item["expect"]) if __name__ == '__main__': unittest.main()
執行結果: plugins: html-3.2.0, metadata-2.0.4collected 2 items demo.py .post http://www.qabujiaban.com/user/login {'username': 'uuuu222都44', 'password': 'WJHasb124*1'} 0000 .get http://www.qabujiaban.com/user/login {'username': 'uuuu222都44', 'password': 'WJHasb124*1'} 0000 [100%] ============================== 2 passed in 0.31s ============================== Process finished with exit code 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/540363.html
標籤:其他
下一篇:day06-功能實作05

