使用python做自動化測試的時候,對於關鍵資訊輸出和記錄是必要的,方便除錯和記錄查詢。python有個logging模組,我們簡單對其進行封裝。
話不多說,流程圖已經畫,自己領會。
封裝log方法
"""import os
import time
import logging.handlers
# 日誌列印等級
levels =
# 建立乙個日誌
logger = logging.getlogger()
level = 'default'
# 建立日誌檔案方法
def create_file(filename):
path = filename[0:filename.rfind('/')]
if not os.path.isdir(path):
os.makedirs(path)
if not os.path.isfile(filename):
fd = open(filename, mode='w', encoding='utf-8')
fd.close()
else:
pass
# 給logger新增handler 新增內容到日誌控制代碼中
def set_handler(levels):
if levels == 'error':
logger.addhandler(mylog.err_handler)
logger.addhandler(mylog.handler)
# 在記錄日誌之後移除控制代碼
def remove_handler(levels):
if levels == 'error':
logger.removehandler(mylog.err_handler)
logger.removehandler(mylog.handler)
def get_current_time():
return time.strftime(mylog.date, time.localtime(time.time()))
class mylog:
path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
log_file = path+'/log/log.log'
err_file = path+'/log/err.log'
logger.setlevel(levels.get(level, logging.notset))
create_file(log_file)
create_file(err_file)
date = '%y-%m-%d %h:%m:%s'
# 建立乙個handler,用於寫入日誌檔案
handler = logging.filehandler(log_file, encoding='utf-8')
err_handler = logging.filehandler(err_file, encoding='utf-8')
@staticmethod
def debug(log_meg):
set_handler('debug')
# 檔案中輸出模式
logger.debug("[debug " + get_current_time() + "]" + log_meg)
remove_handler('debug')
@staticmethod
def info(log_meg):
set_handler('info')
logger.info("[info " + get_current_time() + "]" + log_meg)
remove_handler('info')
@staticmethod
def warning(log_meg):
set_handler('warning')
logger.warning("[warning " + get_current_time() + "]" + log_meg)
remove_handler('warning')
@staticmethod
def error(log_meg):
set_handler('error')
logger.error("[error " + get_current_time() + "]" + log_meg)
remove_handler('error')
@staticmethod
def critical(log_meg):
set_handler('critical')
logger.error("[critical " + get_current_time() + "]" + log_meg)
remove_handler('critical')
# 設定控制台輸出格式
formatter = logging.formatter(
'[%(asctime)s] [%(levelname)s] %(message)s', '%y-%m-%d %h:%m:%s')
# 再建立乙個handler,用於輸出到控制台
console = logging.streamhandler()
console.setformatter(formatter)
logger.addhandler(console)
console.setlevel(logging.notset)
if __name__ == "__main__":
mylog.debug("this is debug message")
mylog.info("this is info message")
mylog.warning("this is warning message")
mylog.error("this is error")
mylog.critical("this is critical message")
執行結果
[2020-05-23 20:41:10] [debug] [debug 2020-05-23 20:41:10]this is debug message檔案結構:[2020-05-23 20:41:10] [info] [info 2020-05-23 20:41:10]this is info message
[2020-05-23 20:41:10] [warning] [warning 2020-05-23 20:41:10]this is warning message
[2020-05-23 20:41:10] [error] [error 2020-05-23 20:41:10]this is error
[2020-05-23 20:41:10] [error] [critical 2020-05-23 20:41:10]this is critical message
process finished with exit code 0
檔案內容:
以上就是python日誌的簡單封裝,基本上滿足日常的需求。
另外,對測試開發,自動化測試技術與思想感興趣的朋友,可以加入qq測開***:696400122進行交流,互相學習與進步。不積跬步無以至千里!
記憶碎片之scrapy中使用logging模快
settings.py log level warning 設定日誌顯示的等級 log file a.log 設定日誌儲存的位置,設定後介面不會顯示日誌內容 spider.py import logging import logging logging.basicconfig函式各引數 filena...
詳解Python中的日誌模組logging
許多應用程式中都會有日誌模組,用於記錄系統在執行過程中的一些關鍵資訊,以便於對系統的執行狀況進行跟蹤。在.net平台中,有非常著名的第三方開源日誌元件log4net,c 中,有人們熟悉的log4cpp,而在python中,我們不需要第三方的日誌元件,因為它已經為我們提供了簡單易用 且功能強大的日誌模...
python基礎之語句 Python基礎之條件語句
我們在程式設計中經常需要通過檢查某個條件,從而決定去做什麼。條件語句就是針對這一情景應用的。本篇主要介紹 if 和 while。一 if語句 先來個總覽 if 條件一 條件一對應的 塊 elif 條件二 條件一對應的 塊 else 不滿足條件一和條件二對應的 塊 if 語句的核心就是值為true 或...