likes
comments
collection
share

测试框架-自定义日志系统前言 为更好地将所学融入实践系统,我决定在已有框架基础上自主搭建测试框架。此举非只为重复开发,

作者站长头像
站长
· 阅读数 20

前言

为更好地将所学融入实践系统,我决定在已有框架基础上自主搭建测试框架。此举非只为重复开发,更主要目的在于深化学习成果。翻阅诸多测试框架,发现它们均具备独特的日志系统。因此,我便选择从日志入手,预计该部分内容较为容易掌握。在软件测试领域,日志记录至关重要,能协助我们追踪测试过程中的细节,以便迅速找到问题所在。本篇文章将展示如何创建自定义日志类,并将其融入测试框架之中。

日志记录的重要性

日志记录在测试中扮演着以下角色:

  • 问题诊断 :记录详细的测试执行信息,便于事后分析和问题诊断。

  • 测试监控 :实时监控测试进度和状态,确保测试按计划进行。

  • 回归测试 :在回归测试中,日志帮助我们理解代码变更对测试结果的影响。

封装日志类

首先我们选择使用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("测试结束")

配置日志级别

根据测试需求,可以在运行测试之前设置不同的日志级别,如DEBUGINFOWARNINGERROR等。

最后

通过封装自定义的日志类,测试框架将拥有更高效、一致且繁多功能的日志系统,从而提升了测试过程中的可追溯性与可维护性。

转载自:https://juejin.cn/post/7402170596690345999
评论
请登录