江苏恒健建设集团有限公司网站,网站建设克隆,在线二级域名子域名查询,云南官网制作目录#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结#xff08;尾部小惊喜#xff09; 前言 Python自动化测试导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结尾部小惊喜 前言 Python自动化测试https://www.bilibili.com/video/BV1MS4y1W79K/ 问题持续集成的自动化用例很多测试环境日志level为debug日志量大概40G/每天定位问题时日志查询很慢该怎么解决
这个问题可以说是自动化测试实践中经常遇到的问题那么该如何解决这些问题呢或者说有没有更好的方案来优化这些问题
下面我们就来分析一下
日志的作用
在聊日志处理之前先来看看日志的作用。
日志的本质就是记录系统各种操作事件的记录信息。它记录了系统的各项特征类似医院体检后的体检报告。它反映了系统的健康状态、各项操作事件、系统变更情况以及各种异常隐患。
日志是技术人员处理工作很重要的一个辅助工具和手段运维可以及时的通过日志发现系统隐患和故障并及时处理问题开发解决问题离不开日志信息的协助定位测试在测试过程中也需要借助日志来发现和确定bug。
可以说日志就相当于我们观察系统的眼睛没有日志就相当于失去了眼睛系统也失去了可观测性。
日志是保障系统高可用的基础记录了系统的一举一动无论是故障处理、系统监控、业务监控以及安全审计都离不开日志的支持。
日志种类繁多一个完善的日志系统主要包含如下的日志信息 日志的分级
日志种类太多不容易区分如何快速的通过日志来排查处理问题呢 日志分级是个很好的方案。
日志分级的本质是对“滚动式文本”日志做一个筛选分类每条日志根据其重要性或严重程度分配一个日志级别。很多应用程序或者工具会自带日志分级当然你也可以根据自己的需要自定义日志级别。
目前并没有完全通用标准的日志分级方案当然对日志进行分级还是很有必要的这样可以有助于提高问题定位和故障处理的效率。下面列举的几种日志等级只是给大家一个参考思路。 日志的管理
聊完了日志的作用和日志分级接下来我们聊聊问题该如何处理。
随着自动化测试覆盖的范围越大case会相应的越来越多运行频次和集成的case数据一上来确实会产生很多的日志。
当运行时遇到报错高效的定位排查就很有必要面对繁杂的日志常见的日志管理手段可以参考如下几点
日志切分超过设置的文件大小就自动切分比如超过10M 日志分级参考log4j标准设置或者自定义日志级别参考上面的内容 日志命名按照时间日志类型做命名区分比如2023-04-28-12-error1.log 日志清理根据自动化测试运行频次定时清理过期日志比如超过48H定时任务自动清理
上述的几点建议仅供参考当然在实际工作中可能还会遇到其他影响因素比如环境不独立、持续集成的自动化case未做用例集区分导致全量运行产生了大量日志等情况。
接下来我们就再来讲解一下logging框架
python-logging模块中默认的是root日志收集器默认的输出级别为WARNING
自定义日志的操作流程
创建日志收集器logger logging.getLogger(“日志收集器的name”)
设置日志收集器的日志级别logger.setLevel(logging.INFO) #设置收集器的级别为INFO
给日志收集器创建输出渠道根据第一部分的内容知日志输出渠道包含控制台输出和文件输出下面以控制台输出为例进行介绍文件输出与之类似创建日志的输出渠道handle1 logging.StreamHandle()
可以单独设置日志输出渠道的级别handle1.setLevel(logging.ERROR) 此步骤可选在未设置日志输出渠道的日志级别时默认使用日志收集器设置的Level
若需单独设置日志输出渠道的日志级别则它的日志级别需高于日志收集器级别否则设置无效。设置日志输出的内容格式
# 设置日志的输出格式
fmt %(asctime)s %(name)s %(levelname)s %(filename)s-%(lineno)d:%(message)s
formatter logging.Formatter(fmt)将设置的日志格式绑定到创建的输出渠道中即将日志格式与输出渠道关联起来
handler1.setFormatter(formatter)将设置好的输出渠道添加到日志收集器
logger.addHandler(handler1)日志代码
import logging# 1、创建日志收集器
logger logging.getLogger(namelogin_test)# 2、设置日志收集器的级别警告级别
logger.setLevel(logging.WARN)# 3、设置日志的输出渠道
# 3.1 控制台日志输出
handler1 logging.StreamHandler()
# 3.2 文件日志输出
handler2 logging.FileHandler(filenamemy_log.log,encodingutf-8)
# 单独设置输出渠道的日志级别
handler1.setLevel(logging.ERROR) # 可选# 4、设置日志的输出格式
fmt %(asctime)s %(name)s %(levelname)s %(filename)s-%(lineno)d:%(message)s
formatter logging.Formatter(fmt)# 5、关联3和4
handler1.setFormatter(formatter)
handler2.setFormatter(formatter)# 6、关联1和5
logger.addHandler(handler1)
logger.addHandler(handler2)# 测试
logger.warning(登录失败警告)
logger.error(登录debug出错)自定义日志的封装
由于自定义日志的操作流程相对比较固定因此我们可以将自定义的日志封装成一个类。当我们需要使用时只需引入该模块即可。
import logging# 对日志的操作进行封装
class MyLogger(logging.Logger):def __init__(self,name,level,fileNone):super().__init__(name,level)# 设置日志的输出渠道handler1 logging.StreamHandler()# 设置日志的输出格式fmt %(asctime)s %(name)s %(levelname)s %(filename)s-%(lineno)d:%(message)sformatter logging.Formatter(fmt)handler1.setFormatter(formatter)# 添加日志的输出渠道self.addHandler(handler1)if file:handler2 logging.FileHandler(filenamefile,encodingutf-8)handler2.setFormatter(formatter)self.addHandler(handler2)passpasspass下面是我整理的2023年最全的软件测试工程师学习知识架构体系图
一、Python编程入门到精通 二、接口自动化项目实战 三、Web自动化项目实战 四、App自动化项目实战 五、一线大厂简历 六、测试开发DevOps体系 七、常用自动化测试工具 八、JMeter性能测试 九、总结尾部小惊喜
人生犹如一场马拉松每个人都在奔跑着。不要害怕前方的艰辛困难只有坚持不懈才能突破自我到达胜利的终点。让我们勇往直前永远保持拼搏的姿态
不管何时何地都要保持热情和梦想不断追求自己的目标。即使路途崎岖也不能气馁放弃因为只有坚持走下去才能收获成功的喜悦。
成功需要勇气、决心和毅力。不要害怕失败和困难保持乐观和坚韧的精神跨越一切阻碍。只要坚持努力相信自己成功就在不远处。让我们携手前行共同追逐梦想