appium+python自动化测试教程,appium怎么做自动化测试
一、日志的作用在项目开发和测试中,日志可以帮助准确定位问题并进行分析。
第二,日志级别
优先级为:DEBUGINFOWARNINGERRORCRITICAL
默认的日志级别是警告级别及以上,控制台不会输出调试或信息。
三。几个重要概念Logger Logger:提供日志的接口,使用Handle processor提供的代码:日志(由Logger生成)发送到哪里,也就是输出到哪里。Filter filter:提供更好的粒度控制,可以决定输出哪些日志,并提供一种优雅的方式来决定是否将日志发送到handleFormatter:指定日志输出的具体格式。四。记录器记录器1,概述
是一个树形层次结构。在使用接口debug、info、warning、error和critical之前,必须创建一个logger实例,即创建一个Logger。如果没有显式创建,默认情况下将创建一个根日志记录器,并应用默认日志级别(warn)。处理器句柄(StreamHandle,即在标准输出中打印出日志信息)和格式化程序(默认格式是第一个简单实用程序中的格式输出)。
创建方法:logger=logging . get logger(logger _ name)
记录器对象从不直接实例化,而是通过模块级函数。
Logging.getLogger(name)创建一个Logger实例。调用logging.getLogger(name)函数时,如果传入的name参数值相同,则总是返回Logger对象实例的应用。
2.创建Logger实例后,可以使用以下方法来设置日志级别和增加处理器句柄。
logger . Set level(logging . error)=将日志级别设置为ERROR,即只输出日志级别大于等于ERROR的日志(默认级别为Warning)。伐木工。Add Handle (handle _ name)=向记录器实例添加处理器。Remove handle (handle _ name)=删除记录器实例的处理器。5.处理处理器1。概观
Handle将日志信息发送到指定的位置(文件、窗口)
句柄处理器的类型:StreamHandle、FileHandle、NullHandle。
2、流媒体工具
创建方法:sh=logging . stream handle(stream==none)
将日志输出发送到控制台
3、文件句柄
将日志记录发送到磁盘文件,该文件继承了StreamHandle的输出函数。
方法:FH=logging.filehandle(文件名,模式= a ,编码=无,延迟=假)
4、空句柄
没有任何格式化或输出,它本质上是开发人员使用的“无操作”处理程序。
本质上是一个“什么都不做”的句柄,由库开发人员使用。
不及物动词格式化程序1。概观
用于设置日志的输出格式。
方法:formatter=logging . formatter(fmt=none,datefmt=none),fmt和datefmt用于设置日志格式和时间格式。
默认格式为:% (asctime) s-%(级别名)s-%(消息)s
默认时间格式:%Y-%m-%d %H:%M:%S
2.使用Formatter对象设置日志信息的最终规则、结构和内容。
七。日志在实际测试案例中的应用。封装类便于外部文件调用日志。示例主要是在控制台输出日志和将日志导出到外部时完成。日志文件。
要封装日志类:
创建记录器
创建句柄
创建格式化程序
配置记录器
上栗子:
1.在项目目录中创建该类的外部日志文件:test.log
2.封装记录器类:
# 日志综合案例的封装导入日志记录类Logger():def _ _ init _ _(self,LoggerName,FileName,CmdLevel,FileLevel): # LoggerName:实例化对象的名字文件名:外部文件名cmdlelevel:设置控制台中日志输出的级别文件级别:设置文件日志输出的级别自我。logger=日志记录。获取记录器(记录器名称)#设置日志的级别self.logger.setLevel(日志记录。调试)#设置日志的输出格式fmt=记录formatter( %(asctime)s-%(name)s-%(level name)s-%(message)s )#借助处理将日志输出到测试日志文件中fh=日志记录FileHandler(文件名)fh.setLevel(文件级别)#借助处理将日志输出到控制台ch=记录流处理程序()ch。设置级别(cmdlelevel)#配置记录器FH。设置格式化程序(fmt)通道。设置格式化程序(fmt)#给记录器添加处理好自己。伐木工。addhandler自身。伐木工。addhandler(ch)def debug(self,message):self。伐木工。调试(消息)定义信息(自身,消息):自身。伐木工。信息(消息)定义警告(自身,消息):自身。伐木工。警告(消息)定义错误(自身,消息):自身。伐木工。错误(消息)定义关键(自身,消息):自身。伐木工。关键(消息)#如下为测试代码,实际运行中可以注释掉if _ _ name _ _== _ _ main _ _ :Logger=Logger( app ium , test.log ,CmdLevel=logging .调试,文件级别=日志记录. INFO) logger.debug(调试消息!)logger.info(info消息!)logger.warn(警告消息!)logger.error(错误消息!)logger.critical(关键消息!) 3.调用廖杰类:
在类的外部创建记录器类的实例化对象,传入需要的参数
# 其他类中调用廖杰类# 实例化记录器类,并传入参数logger=Logger(appium , test.log ,CmdLevel=logging .调试,文件级别=日志记录. INFO)类测试:logger.debug(调试消息!)logger.info(info消息!)logger.warn(警告消息!)logger.error(错误消息!)logger.critical(关键消息!) 4.输出结果:
控制台:2020-09-10 10:32:46,230-appium-DEBUG-debug消息!应用信息信息消息!2020-09-10 10:32:46,230-设备-警告-警告消息!2020-09-10 10:32:46,230-设备-错误-错误消息!关键-关键-关键消息!外部文件字体应用信息信息消息!2020-09-10 10:32:46,230-设备-警告-警告消息!2020-09-10 10:32:46,230-设备-错误-错误消息!应用程序-关键-关键消息
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。