日誌是一個成熟的系統裏不可或缺的一部分,對於自動化測試框架來說,最大的作用大概在於可以取代print()方法,並且可以在日誌文件中回溯。這裏我們引入log日誌類,來代替print()記錄輸出測試過程中的關鍵信息。
一、日誌等級
在日誌中有五個等級debug、info、warning、error、critical
等級 | 等級數值 | 形容 |
debug | 10 | 詳細信息 |
info | 20 | 預期信息 |
warning | 30 | 警告信息 |
error | 40 | 錯誤信息 |
critical | 50 | 嚴重錯誤 |
這裏要注意的是:如果設置日誌等級後,只有大於這個等級的信息纔會顯示,比如你設置輸出記錄信息的等級爲:error,那麼程序裏所寫的命令中,只有大於等於error的:error、critical輸出命令纔會被執行。
二、新建日誌類
這裏我直接貼出所寫的代碼,因爲只有第一次寫log類纔會用到這些,平時只需要調用日誌的命令就好了,所以個人認爲這些代碼詳細意思不懂也沒有關係,會調用就ok。
這裏有幾個地方需要配置或者注意一下:
2.1.項目路徑和日誌文件路徑
這裏我配置了項目的路徑base_url,並且準備新建一個log文件夾,用來放置log日誌文件。
爲了不用再手動去創建log文件夾和log日誌文件,這裏我進行了判斷文件夾和日誌文件是否存在,如果不存在則創建日誌文件夾和文件。
2.2默認level值
默認入參中有默認:clevel、Flevel,如果有等級需要可以進行更改
clevel:cmd輸出日誌界面的日誌等級
Flevel:日誌文件的日誌等級
在創建logger時,也對總的日誌等級設置,這裏我設置爲了debug最低等級。
3.log類代碼
# -*-coding:utf-8 -*-
import os
import logging
# 定義了blog_ui項目的絕對路徑
base_url = "E:/111test/blog_ui/"
class Logger:
def __init__(self, path=base_url + "/log/autotest.log", clevel=logging.DEBUG, Flevel=logging.INFO):
# 判斷log文件夾是否存在,不存在的話創建文件夾以及日誌文件
project_dir = os.listdir(base_url)
dir_name = 'log' # log文件夾
if dir_name not in project_dir:
create_path = base_url + '/' + dir_name
os.makedirs(create_path)
file = open(create_path + '/autotest.log', 'w', encoding='gb18030')
file.close()
# 創建logger
self.logger = logging.getLogger(path)
self.logger.setLevel(logging.DEBUG)
# 防止創建多個logger對象
if not self.logger.handlers:
# 設置日誌格式
fmt = logging.Formatter('[%(asctime)s] [%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S')
# 設置CMD日誌
sh = logging.StreamHandler()
sh.setFormatter(fmt)
sh.setLevel(clevel)
# 設置文件日誌
fh = logging.FileHandler(path)
fh.setFormatter(fmt)
fh.setLevel(Flevel)
self.logger.addHandler(sh)
self.logger.addHandler(fh)
def debug(self, message):
self.logger.debug(message)
def info(self, message):
self.logger.info(message)
def war(self, message):
self.logger.warn(message)
def error(self, message):
self.logger.error(message)
def cri(self, message):
self.logger.critical(message)
三、日誌類的調用
導入自定義的log類
from common.log import Logger
實例化一個log對象
test_log = Logger()
調用log類的方法:
test_log.war("警告信息")
test_log.info("普通信息")
test_log.debug("詳細信息")
test_log.error("錯誤信息")
test_log.cri("嚴重錯誤")
demo.py
from common.log import Logger
test_log = Logger()
test_log.war("警告信息")
test_log.info("普通信息")
test_log.debug("詳細信息")
test_log.error("錯誤信息")
test_log.cri("嚴重錯誤")
接下來加入日誌後,就需要將之前的print方法逐個替換爲log方法,並且在關鍵位置,例如:網址、元素定位地址、輸入值、斷言結果等信息,使用log日誌來打印。