Python_15 ddt驅動與紀錄檔

2023-05-03 06:00:24

一、查缺補漏
1. 在測試報告中新增註釋,寫在類名下面就行,方法名下面,三引號

2. 直接import ddt參照的時候需要ddt.ddt, ddt.data, ddt.unpack
 from ddt import ddt,data,unpackkeyi from會更好,參照的時候直接data就行
二、DDT資料驅動
1. 資料驅動:將不同的資料在同一個業務邏輯上執行,只需寫一個測試用例獲取改變項,就可以完成測試檔案
2. 使用:
  a. 安裝DDT(Data Driven Tests) pip install ddt

  b. 語法:ddt只能對可迭代物件進行解包,像元組和列表,不可以用於字典解包,字典用zip
   from ddt import ddt,data,unpack 從ddt庫種匯出ddt,data,unpack函數
   在測試類上使用@ddt
   在測試函數上使用@data(*case_data),進行資料解壓,然後每一個元素傳入測試函數

  c. @data():解壓一層
   @unpack(): 解壓多層

  d. 用於取值做介面測試

三、紀錄檔
1. 紀錄檔模組
  a. 紀錄檔作用:紀錄檔記錄程式的執行過程
  b. 紀錄檔要素
    i. 紀錄檔渠道:紀錄檔輸出位置,檔案,控制檯,用來收集紀錄檔的
    ii. 紀錄檔級別:info、debug、error 我們經常用的
    iii. 紀錄檔格式:紀錄檔的樣子,類似於報錯提示哪一行
    iv. 紀錄檔內容:自己輸出的內容,或者是報錯資訊
2. 紀錄檔級別(debug < info < warning < error < critical)按嚴重度從小到大排序 ,檢視級別順序是隻可以檢視更嚴重的
  a. debug:程式碼偵錯的輸出,不希望別人看到的紀錄檔
  b. info:表示程式正常執行的輸出
  c. warning:不影響程式執行,可以優化,提示你
  d. error:程式執行報錯
  e. critical:程式嚴重問題
  f. 修改root收集器的紀錄檔級別:logging.basicConfig(level=logging.級別) 設定紀錄檔級別
3. 紀錄檔收集器建立
  a. 建立紀錄檔收集器:建立和root一樣的收集器
    test_log = logging.getLogger(name='紀錄檔渠道的名稱') 紀錄檔渠道的名稱一般是與專案名稱一致
  b. 建立紀錄檔收集渠道:輸出到哪裡
    範例化名稱1 = logging.StreamHandler() 建立紀錄檔控制檯渠道,需要範例化
  c. 建立紀錄檔格式 fmt是引數,引數可以做名字,但是關鍵字不可以,紫色是引數 格式解釋在圖片裡
   格式名 = '【%(asctime)s-%(name)s-%(levelno)s-%(levelname)s-%(pathname)s-%(lineno)d】:%(message)s'
   格式接收名 = logging.Formatter(fmt = 格式名)
   測試中的值傳給了message
  d. 設定紀錄檔輸出格式【渠道】範例化名稱1.setFormatter(fmt =格式接收名) 範例化名稱1.setLevel(logging.級別) 渠道級別
  e. 設定紀錄檔級別【收集器】test_log.setLevel(logging.級別) 一般只設定一個
  f. 收集器繫結渠道 test_log.addHandler(範例化名稱1)

4. 紀錄檔切割 將紀錄檔收集到檔案中方便收集 紀錄檔會疊加在檔案中
  handlers.RotatingFileHandler():按檔案大小切紀錄檔【瞭解】
  handlers.TimedRotatingFileHandler():按時間切紀錄檔【掌握】
  filename:紀錄檔檔名稱,要帶路徑,預設是當前目錄
  when='h',:紀錄檔卷動週期的單位,S:秒, M:分鐘 ,H:小時, D:日, W:周, midnight:日期
  interval=1:捲動週期(紀錄檔切割週期),1 間隔多個個when
  backupCount=0:紀錄檔保留的個數
  encoding=None:編碼格式

 5. 函數封裝紀錄檔,一般呼叫紀錄檔函數的範例化物件,不直接呼叫函數

四、一些小記
1. 範例化名 = logging.getLogger() 範例化接收,裡面沒有內容列印出來沒有內容None 用於紀錄檔
2. 報缺少self欄位時多半是範例化問題,後面沒寫括號
3. 不想顯示None把print去掉就好