当前位置:   article > 正文

python接口自动化测试输出日志到控制台和文件_自动化接口测试日志

自动化接口测试日志

目录

一、日志的作用

二、日志级别

三、几个重要的概念

四、Logger 记录器

五、Handle 处理器

六、Formatter 格式化器

七、日志在实际测试用例中的应用


一、日志的作用

一般程序日志出自下面几个方面的需求:
1. 记录用户操作的审计日志,甚至有的时候就是监管部门的要求。
2. 快速定位问题的根源
3. 追踪程序执行的过程。
4. 追踪数据的变化
5. 数据统计和性能分析
6. 采集运行环境数据
一般在程序上线之后,一旦发生异常,第一件事就是要弄清楚当时发生了什么。用户当时做了什么操作,环境有无影响,数据有什么变化,是不是反复发生等,然后再进一步的确定大致是哪个方面的问题。确定是程序的问题之后再交由开发人员去重现、研究、提出解决方案。这时,日志就给我们提供了第一手的资料。

二、日志级别

1. DEBUG Level
  指出细粒度信息事件,主要用来调试应用程序。

2.INFO level
  表明粗粒度级别,上强调应用程序的运行过程,比如进入某个业务分支。

3. WARN level
  表明出现潜在错误。

4. ERROR leve
  指出虽然发生错误事件,但不影响系统的继续运行。

5.FATAL level
  指出每个严重的错误事件将会导致应用程序的退出。

Log4j建议只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。 等于或高于日志记录器当前配置级别的日志的将被打印出来。

优先级为:DEBUG<INFO<WARNING<ERROR<CRITICAL

日志的默认级别是warning级别及以上,debug和info都不会再控制台输出

三、几个重要的概念

Logger 记录器:提供日志的接口,供应用代码使用

Handle 处理器:将(记录器产生的)日志记录发送到哪里,即输出到哪里

Filter 过滤器:提供了更好的粒度控制,它可以决定输出哪些日志记录,提供一种优雅的方式决定一个日志记录是否发送到handle

Formatter 格式化器:指定日志记录输出的具体格式

四、Logger 记录器

1、概述

是一个树形层级结构,在使用接口debug、info、warning、error、critical之前必须创建Logger实例,即创建一个记录器,如果没有显式上的进行创建,则默认创建一个root logger,并应用默认的日志级别(warn),处理器Handle(StreamHandle,即将日志信息打印输出在标准输出上),和格式化器Formatter(默认的格式即为第一个简单实用程序中输出的格式)。

创建的方法:logger = logging.getLogger(logger_name)

Logger对象从不直接实例化,而是通过模块级别的功能

Logging.getLogger(name)创建logger实例,调用logging.getLogger(name)功能时,如果传入的name参数值相同,则总是返回一个logger对象实例的应用。

2、创建Logger实例后,可以用以下方法进行日志级别设置,增加处理器Handle

        logger.setLevel(logging.ERROR) = 设置日志级别为ERROR,即只有日志级别大于等于ERROR的日志才会输出(默认级别是warning)

        logger.addHandle(handle_name) = 为Logger实例增加一个处理器

        logger.removeHandle(handle_name) = 为Logger实例删除一个处理器

五、Handle 处理器

1、概述

handle 将日志信息发送到指定的位置(文件、窗口)

Handle处理器的类型:StreamHandle,FileHandle,NullHandle

2、StreamHandle

创建方法:sh = logging.StreamHandle(stream==None)

将日志输出发送到控制台

3、FileHandle

将日志记录发送到磁盘文件,它继承了StreamHandle的输出功能

创建方法:fh = logging.FileHandle(filename,mode='a',encoding=None,delay=False)

4、NullHandle

不做任何格式化或输出,它本质上是一个开发人员使用的“无操作”处理程序

本质上是一个“什么都不做”的handle,由库开发者使用

六、Formatter 格式化器

1、概述

用于设置日志的输出格式

创建方法:formatter = logging.Formatter(fmt=None,datefmt=None),fmt和datefmt是用来设置日志格式和时间格式

默认的格式:%(asctime)s-%(levelname)s-%(message)s

默认的时间格式:%Y-%m-%d %H:%M:%S

2、使用Formatter对象设置日志信息最后的规则、结构和内容

七、日志在实际测试用例中的应用

封装类有便于外部文件对日志的调用,例子主要完成在控制台输出日志和日志输出到外部的.log文件中

封装日志类的步骤:

创建 logger

创建 handle

创建 formatter

配置 logger

上栗子:

1.在工程目录下创建类的外部log文件:test.log

2.封装Logger类:

  1. # 日志综合案例的封装
  2. import logging
  3. class Logger():
  4. def __init__(self, LoggerName, FileName, CmdLevel, FileLevel):
  5. # LoggerName:实例化对象的名字 FileName:外部文件名 CmdLevel:设置控制台中日志输出的级别 FileLevel:设置文件日志输出的级别
  6. self.logger = logging.getLogger(LoggerName)
  7. # 设置日志的级别
  8. self.logger.setLevel(logging.DEBUG)
  9. # 设置日志的输出格式
  10. fmt = logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s')
  11. # 借助handle将日志输出到test.log文件中
  12. fh = logging.FileHandler(FileName)
  13. fh.setLevel(FileLevel)
  14. # 借助handle将日志输出到控制台
  15. ch = logging.StreamHandler()
  16. ch.setLevel(CmdLevel)
  17. # 配置logger
  18. fh.setFormatter(fmt)
  19. ch.setFormatter(fmt)
  20. # 给logger添加handle
  21. self.logger.addHandler(fh)
  22. self.logger.addHandler(ch)
  23. def debug(self,message):
  24. self.logger.debug(message)
  25. def info(self,message):
  26. self.logger.info(message)
  27. def warn(self,message):
  28. self.logger.warning(message)
  29. def error(self,message):
  30. self.logger.error(message)
  31. def critical(self,message):
  32. self.logger.critical(message)
  33. # 如下为测试代码,实际运行中可以注释掉
  34. if __name__ == "__main__":
  35. logger = Logger("appium","test.log",CmdLevel=logging.DEBUG,FileLevel=logging.INFO)
  36. logger.debug("debug message!")
  37. logger.info("info message!")
  38. logger.warn("warning message!")
  39. logger.error("error message!")
  40. logger.critical("critical message!")

3.调用Loger类:

在类的外部创建Logger类的实例化对象,传入需要的参数

  1. # 其他类中调用Loger类
  2. # 实例化Logger类,并传入参数
  3. logger = Logger("appium", "test.log", CmdLevel=logging.DEBUG, FileLevel=logging.INFO)
  4. class Test:
  5. logger.debug("debug message!")
  6. logger.info("info message!")
  7. logger.warn("warning message!")
  8. logger.error("error message!")
  9. logger.critical("critical message!")

4.输出结果:

  1. 控制台:
  2. 2020-09-10 10:32:46,230-appium-DEBUG-debug message!
  3. 2020-09-10 10:32:46,230-appium-INFO-info message!
  4. 2020-09-10 10:32:46,230-appium-WARNING-warning message!
  5. 2020-09-10 10:32:46,230-appium-ERROR-error message!
  6. 2020-09-10 10:32:46,230-appium-CRITICAL-critical message!
  7. 外部文件:
  8. 20-09-10 10:32:46,230-appium-INFO-info message!
  9. 2020-09-10 10:32:46,230-appium-WARNING-warning message!
  10. 2020-09-10 10:32:46,230-appium-ERROR-error message!
  11. 2020-09-10 10:32:46,230-appium-CRITICAL-critical message

最后:【可能给你带来帮助的教程】

领取的关注公众号:“测试宝藏库”

 这一些资料,对做【软件测试】的朋友而言应该是较为完整了,这类学习资料也陪伴我走过了最艰难的路程,希望也可以帮助到你!万事要尽早,尤其是技术行业,一定要提升技术功底。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/512742
推荐阅读
相关标签
  

闽ICP备14008679号