先把日志代码放上,后面再将如何将日志集成到框架和测试报告中
import logging.handlers
from path_manager import project_path
class GetLogger:
# 整个框架其实只需要一个日志对象即可,可以用单例模式实现
# 把logger定义成类属性,默认值是None
logger = None
# 类方法中完成上面logger属性的实例化过程
@classmethod
def get_logger(cls):
if cls.logger is None:
# 创建日志名称apiautotest,这个值是自定义的
cls.logger = logging.getLogger('apiautotest')
# 设置日志级别,debug/info/waring/error/critical
# 级别从左到右初步升高
cls.logger.setLevel(logging.DEBUG) # 设置为DEBUG,意味着比他高的级别的日志都会被记录
# 定义日志的一种格式
fmt = "%(asctime)s %(levelname)s [%(name)s] [%(filename)s (%(funcName)s:%(lineno)d)] - %(message)s"
fm = logging.Formatter(fmt)
# 创建日志处理器,把日志存储到文件,按照一定的规则
tf = logging.handlers.TimedRotatingFileHandler(
filename=f'{project_path}/logs/requests.log',
when='H',# 间隔多长时间去生成新的日志文件,时间单位
interval=1,# 间隔的时间数量
backupCount=3,# 除了最新的日志文件外,最多保留3个之前的日志文件
encoding='utf-8'
)
# 将日志输出到控制台上
logging.basicConfig(level=logging.DEBUG,format=fmt)
# 在处理器tf中添加格式
tf.setFormatter(fm)
# 在日志对象添加处理器
cls.logger.addHandler(tf)
return cls.logger
if __name__ == '__main__':
logger = GetLogger.get_logger() # 得到一个对象
logger.debug('这是debug日志')
logger.info('这是info日志')
logger.warning('这是warning日志')
logger.error('这是error日志')
logger.exception('这是异常日志')
logger.critical('这是critical日志')