测试框架-自定义日志系统前言 为更好地将所学融入实践系统,我决定在已有框架基础上自主搭建测试框架。此举非只为重复开发,
前言
为更好地将所学融入实践系统,我决定在已有框架基础上自主搭建测试框架。此举非只为重复开发,更主要目的在于深化学习成果。翻阅诸多测试框架,发现它们均具备独特的日志系统。因此,我便选择从日志入手,预计该部分内容较为容易掌握。在软件测试领域,日志记录至关重要,能协助我们追踪测试过程中的细节,以便迅速找到问题所在。本篇文章将展示如何创建自定义日志类,并将其融入测试框架之中。
日志记录的重要性
日志记录在测试中扮演着以下角色:
-
问题诊断 :记录详细的测试执行信息,便于事后分析和问题诊断。
-
测试监控 :实时监控测试进度和状态,确保测试按计划进行。
-
回归测试 :在回归测试中,日志帮助我们理解代码变更对测试结果的影响。
封装日志类
首先我们选择使用loguru库来封装自定义的日志系统。
安装loguru
这一步很简单,执行如下命令即可:
pip install loguru
定义日志类
我创建了一个名为PytestXLogger
的类,封装日志配置和初始化逻辑:
class PytestXLogger:
logger = loguru_logger
_instance = None
def __new__(cls, *args, **kwargs):
if not cls._instance:
cls._instance = super(PytestXLogger, cls).__new__(cls, *args, **kwargs)
cls._instance._initialize(*args, **kwargs)
return cls._instance
__new__
方法: 这是用于创建对象实例的方法。它检查 _instance 是否为 None,如果是,创建一个新实例并初始化它。
确保单例: 通过 new 方法确保 PytestXLogger 只有一个实例。
哈哈,可以看出来我们使用的单例模式。
初始化日志配置
在_initialize
方法中,定义控制台和文件日志的格式,并设置日志级别和日志文件路径:
def _initialize(self, level: str = Log.DEFAULT_LOG_LEVEL, log_path: str = LOG_PATH):
self._console_format = ("...") # 控制台日志格式
self._file_format = ("...") # 文件日志格式
self.configure_logger(level.upper(), log_path)
配置日志器
configure_logger
方法用于配置日志器,添加控制台和文件处理器:
def configure_logger(self, level: str, log_file_path: str):
self.logger.remove() # 移除现有处理器
self.logger.add(sys.stdout, level=level, format=self._console_format) # 添加控制台处理器
self.logger.add(log_file_path, level=level, format=self._file_format, encoding="utf-8") # 添加文件处理器
创建日志实例
创建PytestXLogger
的实例,并将其日志器logger
暴露给外部使用:
pytestx_logger = PytestXLogger()
logger = pytestx_logger.logger
集成到测试框架
将自定义的日志类集成到测试框架中,应该比较简单了,直接导入使用即可。
在测试用例中使用
在编写测试用例时,直接使用logger
记录日志:
def test_example():
logger.info("测试开始")
# 测试逻辑...
logger.info("测试结束")
配置日志级别
根据测试需求,可以在运行测试之前设置不同的日志级别,如DEBUG
、 INFO
、 WARNING
、 ERROR
等。
最后
通过封装自定义的日志类,测试框架将拥有更高效、一致且繁多功能的日志系统,从而提升了测试过程中的可追溯性与可维护性。
转载自:https://juejin.cn/post/7402170596690345999