【python自动化实战-引入trace】在项目中引入trace跟踪每条testcase执行过程中的日志+日志推送es

为解决自动化测试中异常case定位困难的问题,本文介绍如何引入trace_id,通过pytest钩子函数结合uuid生成唯一的trace_id,并将其与测试用例关联。日志信息将被写入或推送到ES,以实现高效的问题排查。同时探讨了使用fixture和装饰器在不同场景下应用trace_id的方法。

背景

最近公司在跑自动化case过程中有很多异常case,有的很难依据现有的日志定位问题(日志多且乱,无关联性),时常需要本地debug才能发现问题,很影响写自动化的效率以及自动化运行的通过率。

因此领导下发了一个需求:需要给每一条case绑定一个trace,通过trace关联case执行过程中的日志信息。这样通过查看日志即可快速知道case运行的问题点。经过一番思考与实践,就有了下面的方案。

分析

trace的引入:

  1. 在自定义的log_tool中添加trace_id的生成与写入
  2. 使用pytest的钩子函数给每条case添加不同的trace_id
  3. trace_id 采用uuid 来生成
  4. 日志推送es(或者写入本地日志文件中)

实现

  • log_tool.py(自定义封装的日志工具)

    # log_tool.py 中
    import logging
    import os
    import time
    import uuid
    from functools import wraps
    from loguru import logger
    
    class MyLog:
        my_logger = logger
        """
        使用loguru封装日志类
        """
        path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
        # 判断当前时间的目录在日志目录结构中是否存在,存在就不创建,不存在就创建
        dir_time = time.strftime("%Y-%m-%d", time.localtime(time.time()))
        log_file = os.path.join(os.path.join(os.path.join(path, "Log"), "log"), '{}.log'.format(dir_time))
    
        # 设置loguru写入日志方式
        log_handler = my_logger.add(log_file, level="INFO",
                                    format="{time:YYYY-MM-DD HH:mm:ss.SSS} {level} {line} {message}", encoding="utf-8",
                                    retention="30 days", backtrace=True)
    
        trace_id = []  # 定义trace_id,支持多级嵌套
    
        @classmethod
        def _log(cls, lev: str, log_msg):
            if cls.trace_id:
                log_msg = "[" + '|'.join
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值