测试框架-自定义日志系统
前言
为更好地将所学融入实践系统,我决定在已有框架基础上自主搭建测试框架。此举非只为重复开发,更主要目的在于深化学习成果。翻阅诸多测试框架,发现它们均具备独特的日志系统。因此,我便选择从日志入手,预计该部分内容较为容易掌握。在软件测试领域,日志记录至关重要,能协助我们追踪测试过程中的细节,以便迅速找到问题所在。本篇文章将展示如何创建自定义日志类,并将其融入测试框架之中。
日志记录的重要性
日志记录在测试中扮演着以下角色:
-
问题诊断:记录详细的测试执行信息,便于事后分析和问题诊断。
-
测试监控:实时监控测试进度和状态,确保测试按计划进行。
-
回归测试:在回归测试中,日志帮助我们理解代码变更对测试结果的影响。
封装日志类
首先我们选择使用loguru
库来封装自定义的日志系统。
安装loguru
这一步很简单,执行如下命令即可:
pip install loguru
定义日志类
我创建了一个名为PytestXLogger
的类,封装日志配置和初始化逻辑:
class PytestXLogger:logger = loguru_logger_instance = Nonedef __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
集成到测试框架
将自定义的日志类集成到测试框架中,应该比较简单了,直接导入使用即可。
1. 在测试用例中使用
在编写测试用例时,直接使用logger
记录日志:
def test_example():logger.info("测试开始")# 测试逻辑...logger.info("测试结束")
2. 配置日志级别
根据测试需求,可以在运行测试之前设置不同的日志级别,如DEBUG
、INFO
、WARNING
、ERROR
等。
最后
通过封装自定义的日志类,测试框架将拥有更高效、一致且繁多功能的日志系统,从而提升了测试过程中的可追溯性与可维护性。
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。