Files
AppAutoTest/utils/日志模块使用指南.md
CNWei 9355a576a9 feat: 新增日志系统与执行追踪装饰器
- 基于 Loguru 重新封装,支持异步写入和多线程安全。
- 实现 @trace_step 装饰器,自动记录步骤名、参数及执行耗时。
- 引入 source 标签区分框架系统(System)与业务任务(task)日志。
- 新增 logger 模块测试用例 test_logger.py
2026-01-15 18:00:05 +08:00

3.0 KiB
Raw Blame History

日志与执行追踪模块使用指南 本模块基于 Loguru 封装,专为自动化测试项目设计,提供工业级的日志记录、多线程安全保障以及业务步骤自动追踪能力。

🌟 核心特性 全局一致性:统一日志格式,控制台带颜色显示,方便快速定位。

自动执行追踪:使用 @trace_step 装饰器,自动记录方法入参、出参、耗时及执行状态。

智能参数解析:装饰器自动识别并隐藏 self 和 cls 参数,保护日志整洁。

上下文透传:支持通过 .bind() 绑定设备 ID 或模块标识,解决多机并行日志混杂问题。

分层标识:默认区分系统日志 (System) 与业务任务日志 (task)。

异步安全:支持多进程/多线程安全写入,不影响 Appium 执行性能。

🚀 快速上手

  1. 基础日志记录 在任何模块中直接导入 logger 即可使用。
from utils.logger import logger

logger.info("这是一条普通信息")
logger.debug("调试模式下的详细信息")
logger.error("记录一个错误")
  1. 使用装饰器追踪业务步骤 (@trace_step) 在 PageObject 方法或任何业务函数上添加装饰器,即可获得全链路追踪。
from utils.logger import trace_step

@trace_step("用户登录")
def login(username, password):
    # 执行逻辑...
    return True

# 日志输出:
# 🚀 [START] 用户登录 -> login('admin', '****')
# ✅ [SUCCESS] 用户登录 | 耗时: 1.25s | 返回: True
  1. 多机并行:上下文透传 (.bind) 在 Appium 并行测试中,用于区分不同设备的日志流。
from utils.logger import logger

class BasePage:
    def __init__(self, driver, device_id):
        self.driver = driver
        # 绑定设备 ID 到当前实例的 logger
        self.log = logger.bind(source=device_id)

    def click_element(self, loc):
        self.log.info(f"点击元素: {loc}")

# 日志输出:
# | INFO | Pixel_6 | base_page:click_element:15 - 点击元素: id=login_btn
# | INFO | S22     | base_page:click_element:15 - 点击元素: id=login_btn

🛠️ 进阶配置 标识符说明 (source 字段) 日志格式中包含一个 source 字段(占位符为 magenta 颜色),用于区分日志来源:

System: (默认) 框架底层日志、驱动初始化等。

task: (装饰器默认) 具体的业务测试步骤。

自定义: 通过 @trace_step(source="SQL") 或 logger.bind(source="API") 自定义。

日志存储 路径: 项目根目录 /logs/。

滚动: 每天午夜 00:00 自动切割。

保留: 默认保留最近 30 天 的日志。

⚠️ 注意事项 不要在装饰器内手动接收返回值:@trace_step 已经自动处理了函数的返回值记录。

优先使用 self.log在 PageObject 类中,请务必使用 self.log.info() 而非全局 logger.info(),以确保 bind 的上下文信息(如设备 ID能正确显示。

希望这套日志系统能显著提升您的调试效率和项目质量!如有任何疑问,请随时查阅 utils/logger.py 源码。