基于 Python3 的网页自动化测试框架实现_Utils/Logger – 日志《五》

今天又是被割韭菜的一天。——《丫子》
基于 Python3 的网页自动化测试框架实现_Utils/Logger – 日志《五》

前言

想要在Python3上编写一个简易的日志工具是很简单的,主要想满足以下几点需求:

  • 能满足控制台输出和文件输出(如果需要将输出通过字节流发送给服务器那当然也可以,不过这个稍复杂,不在本框架处理范围内)。
  • 能满足输出不同的Level,最好可以通过配置文件配置。
  • 不会因为多个 logger 实例而出现重复日志的情况。

Action

所以根据需求设想从配置文件中进行读取。

  1. 在Config目录中新建FrameConfig.ini文件,并输入配置:
    基于 Python3 的网页自动化测试框架实现_Utils/Logger – 日志《五》
    这里需要注意的是只有在配置文件按ANSI编码保存的时候才能正确读取,否则会报错。
  • ConsoleSwitch:Console 日志开关
  • FileSwitch:文件日志开关
  • ConsoleLevel:Console 日志输出级别
  • FileLevel:FireLevel 日志输出级别
  1. 在Utils目录中新建Logger.py文件,先解析配置文件,并读取配置:
    基于 Python3 的网页自动化测试框架实现_Utils/Logger – 日志《五》
    这里用了异常处理语句 try…except…,在except代码块中不抛出异常,而是打印异常栈,并使用默认的配置值。这样做是为了保证框架的健全性,不会因为读取配置文件出错时退出。后面可能还有很多地方会采用这种方式。

  2. 编写Logger类,定义构造函数:
    基于 Python3 的网页自动化测试框架实现_Utils/Logger – 日志《五》
    构造函数里主要是定义了日志类的一些属性,包括日志名,存放地址,日志格式,输出级别等。注意输出级别是引用的配置文件中的值。

  3. 编写get_logger方法:
    基于 Python3 的网页自动化测试框架实现_Utils/Logger – 日志《五》
    注意这里文件日志用的是 TimedRotatingFileHandler,是带时间回滚的日志形式。注意方法的默认参数引用的是配置文件中日志开关的值。
    还要注意一开始的 if not self.logger.handlers 语句,这条语句保证了始终只有一个日志句柄,不会出现重复日志的情况。

  4. 单例模式:
    当然还有一种简单的方式来保证不会出现重复日志的情况就是使用单例模式。定义好Logger类之后,在类外部添加实例化语句并调用 get_logger() 方法。
    基于 Python3 的网页自动化测试框架实现_Utils/Logger – 日志《五》
    以后所有其他的文件只引用这个单独的 logger 句柄,保证整个工程始终只有一个句柄。

  5. 测试:
    最后查看测试结果:
    基于 Python3 的网页自动化测试框架实现_Utils/Logger – 日志《五》
    基于 Python3 的网页自动化测试框架实现_Utils/Logger – 日志《五》
    大家有兴趣还可以测试读取配置文件出错的情况,调整日志输出级别的情况,和关闭日志工具的情况。

End

欢迎关注公众号以及加群讨论,所有文章都会同步到公众号,方便大家在碎片时间阅读。
基于 Python3 的网页自动化测试框架实现_Utils/Logger – 日志《五》
▲扫描二维码“识别”关注 简介:热爱生活,享受旋律!