1. 程式人生 > >Python + Selenium自動化測試 -- 自定義Log類

Python + Selenium自動化測試 -- 自定義Log類

本文用日誌來記錄我們測試指令碼做的事情,其實最好的辦法是寫事件監聽(對於小白的我,暫時不會,先從日誌學起)。
下面寫一個日之類,用來輸出不同級別的日誌資訊到本地資料夾下的日誌檔案裡。
目標輸出效果:
這裡寫圖片描述
解決思路:
1. 封裝Log類,類名為Logger;
2. 在Logger類中建立記錄器logger;
3. 建立一個handler,用於寫入日誌檔案,寫到磁碟;再建立一個handler,用於輸出到控制檯;
4. 定義兩個handler的輸出格式,並且給logger新增handler
5. 建立一個測試類TestMyLog,編寫程式碼使用Log類,記錄日誌

步驟:
1. 在專案下建立一個logs資料夾,用於儲存log日誌檔案;
2. 建立logger檔案,編碼如下:

# logging模組支援我們自定義封裝一個新日誌類
import logging
import os.path
import time


class Logger(object):

    def __init__(self, logger):
        """
        指定儲存日誌的檔案路徑,日誌級別,呼叫檔案
        將日誌存入到指定的檔案中
        :param logger:
        """
        # 建立一個logger(記錄器)
        # 日誌記錄的工作主要由Logger物件來完成。在呼叫getLogger時要提供Logger的名稱(注:多次使用相同名稱 來呼叫getLogger,返回的是同一個物件的引用。)
self.logger = logging.getLogger(logger) self.logger.setLevel(logging.DEBUG) # 建立一個handler,用於寫入日誌檔案 rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time())) log_path = os.path.dirname(os.getcwd()) + '/logs/' log_name = log_path + rq + '.log' # 檔名 # 將日誌寫入磁碟
fh = logging.FileHandler(log_name) fh.setLevel(logging.INFO) # 建立一個handler,用於輸出到控制檯 ch = logging.StreamHandler() ch.setLevel(logging.INFO) # 定義handler的輸出格式 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') fh.setFormatter(formatter) ch.setFormatter(formatter) # 給logger新增handler self.logger.addHandler(fh) self.logger.addHandler(ch) def getlog(self): return self.logger
  1. 建立一個測試類,程式碼如下:
import time
from selenium import webdriver
from test.logger import Logger


mylogger = Logger(logger='TestMyLog').getlog()


class TestMyLog(object):

    def print_log(self):

        driver = webdriver.Chrome()
        mylogger.info("開啟瀏覽器")
        driver.maximize_window()
        mylogger.info("最大化瀏覽器視窗.")
        driver.implicitly_wait(8)

        driver.get("https://www.baidu.com")
        mylogger.info("開啟百度首頁.")
        time.sleep(1)
        mylogger.info("暫停一秒.")
        driver.quit()
        mylogger.info("關閉並退出瀏覽器.")

testlog = TestMyLog()
testlog.print_log()

執行結果:
1)logs檔案下生成一個.log檔案
這裡寫圖片描述
2)控制檯輸出如下:
這裡寫圖片描述