Python + Selenium自動化測試 -- 自定義Log類
阿新 • • 發佈:2019-02-07
本文用日誌來記錄我們測試指令碼做的事情,其實最好的辦法是寫事件監聽(對於小白的我,暫時不會,先從日誌學起)。
下面寫一個日之類,用來輸出不同級別的日誌資訊到本地資料夾下的日誌檔案裡。
目標輸出效果:
解決思路:
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
- 建立一個測試類,程式碼如下:
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)控制檯輸出如下: