自動化框架--log日誌封裝
阿新 • • 發佈:2017-08-06
封裝 .config import format) eve cal aps spl txt文件
一: 封裝log模塊, 在自動化測試中日誌輸出,在配置文件中配置需輸出的位置 , 1為輸出, 0不輸出。
1,console_output_on = 1 輸出到控制臺
2,file_output_on =1 輸出到txt文件中
configparser 模塊可以從配置文件中獲取數據
Log.py
1 import logging 2 import sys 3 import configparser 4 5 class Log: 6 def __init__(self): 7 pass 8 9 def __new__(cls):View Code10 if not hasattr(cls,‘instance‘): 11 cls._instance = super(Log, cls).__new__(cls) 12 conf = configparser.ConfigParser() 13 conf.read(‘log_config.ini‘,encoding=‘utf-8‘) 14 cls._instance.level = conf.get(‘logging‘,‘level‘) 15 cls._instance.name = conf.get(‘logging‘, ‘logger_name‘) 16 cls._instance.path = conf.get(‘logging‘, ‘file_path‘) 17 cls._instance.formatter = conf.get(‘logging‘, ‘formatter‘) 18 cls._instance.format = cls._instance.formatter.replace(‘|‘, ‘%‘) 19 cls._instance.console_output_on = conf.getint(‘logging‘, ‘console_output_on‘) 20 cls._instance.file_output_on = conf.getint(‘logging‘, ‘file_output_on‘) 21 cls._instance.logger =logging.getLogger(‘test‘) 22 cls._instance.log() 23 return cls._instance 24 25 26 def get_log(self): 27 return self.logger 28 29 30 def log(self): 31 if self.console_output_on == 1: 32 self.logger.setLevel(self.level) 33 # 設置log.txt路徑 34 #設置控制臺輸出日誌 35 sh = logging.StreamHandler(sys.stderr) 36 # 設置格式 37 formatter = logging.Formatter(self.format) 38 sh.setFormatter(formatter) 39 self.logger.addHandler(sh) 40 41 if self.file_output_on==1: 42 self.logger.setLevel(self.level) 43 # 設置log.txt路徑 44 # 設置文件輸入日誌地址 45 #最多備份5個日誌文件,每個日誌文件最大10M,這個Handler類似於上面的FileHandler,但是它可以管理文件大小。 46 # 當文件達到一定大小之後,它會自動將當前日誌文件改名,然後創建 一個新的同名日誌文件繼續輸出 47 #fh = logging.RotatingFileHandler(self.path,maxBytes=10*1024*1024,backupCount=5) 48 fh = logging.FileHandler(self.path) 49 # 設置格式 50 formatter = logging.Formatter(self.format) 51 fh.setFormatter(formatter) 52 self.logger.addHandler(fh) 53 return self.logger 54 55 log = Log().get_log()
二: 配置文件設置
1 [logging] 2 level=DEBUG 3 logger_name=test 4 file_path=H:\pycharm\untitled2\python_study\log\log.txt 5 formatter=[|(asctime)s]:|(filename)s [line:|(lineno)d] |(levelname)s : |(message)s |(funcName)s 6 console_output_on=1 7 file_output_on=1 8 9 [level] 10 日誌等級: debug, info,warning,error,criticalView Code
三: 測試文件
1 from log.Log import * 2 import codecs 3 log.info(‘this is testing‘) 4 5 def fun(x,y): 6 """隨意測試""" 7 return x/y 8 9 try: 10 fun(2,0) >0 11 except Exception as e: 12 log.error(‘分母不能為0 {}‘.format(e))View Code
四:日誌輸出 log.txt
五: 目錄
自動化框架--log日誌封裝