web自動化測試第25步:加入log日誌

日誌是一個成熟的系統裏不可或缺的一部分,對於自動化測試框架來說,最大的作用大概在於可以取代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日誌來打印。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章