mi-task/test/logs/test_log.py
2025-08-18 11:06:42 +08:00

142 lines
3.8 KiB
Python
Executable File

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
日志模块测试脚本
"""
import time
import math
import json
from utils.log_helper import (
LogHelper, section, info, debug, warning, error, success, timing,
table, progress, syntax, json_log, panel
)
def test_simple_logging():
"""测试基本日志功能"""
section("基本日志测试", "信息")
debug("这是一条调试信息")
info("这是一条普通信息", "信息")
warning("这是一条警告信息", "警告")
error("这是一条错误信息", "错误")
success("这是一条成功信息", "成功")
# 不带emoji的日志
debug("不带emoji的调试信息")
info("不带emoji的普通信息")
def test_timing_logging():
"""测试计时日志功能"""
section("计时日志测试", "时间")
start = time.time()
# 模拟耗时操作
sum_val = 0
for i in range(1000000):
sum_val += i
elapsed = time.time() - start
timing("求和计算", elapsed)
# 测试毫秒级
start = time.time()
math.sin(0.5)
elapsed = time.time() - start
timing("计算正弦", elapsed)
def test_section_logging():
"""测试分节日志功能"""
logger = LogHelper("分节测试")
logger.section("旋转操作开始", "旋转")
logger.debug("准备旋转", "调试")
logger.info("开始执行旋转", "旋转")
logger.info("旋转角度: 90度", "角度")
logger.success("旋转完成", "完成")
logger.section("检测横线", "检测")
logger.info("开始检测横线", "检测")
logger.info("检测到横线,距离: 0.5米", "距离")
logger.success("检测完成", "完成")
def test_rich_features():
"""测试Rich特性"""
section("Rich功能测试", "关键")
# 测试表格输出
column_names = ["参数名", "数值", "单位", "说明"]
rows = [
["速度", 1.5, "m/s", "机器人移动速度"],
["角速度", 0.8, "rad/s", "旋转速度"],
["响应时间", 0.1, "s", "控制延迟"],
["电池电量", 87, "%", "剩余电量"]
]
table("机器人状态参数", column_names, rows, "状态统计数据")
# 测试进度条
items = list(range(10))
for item in progress(items, "处理任务", unit="任务"):
# 模拟处理
time.sleep(0.2)
# 测试代码高亮
code = """
def align_to_horizontal_line(ctrl, msg, observe=False):
'''控制机器人旋转到横向线水平的位置'''
# 检测横向线边缘
edge_point, edge_info = detect_horizontal_track_edge(
ctrl.image_processor.get_current_image(),
observe=observe,
save_log=True
)
if edge_point is None:
error("未检测到横向线,无法进行校准", "失败")
return False
success("校准完成", "完成")
return True
"""
syntax(code, "python", "横线校准函数")
# 测试JSON输出
data = {
"机器人ID": "MI-001",
"位置": {
"x": 1.23,
"y": 4.56,
"z": 0.05
},
"状态": "运行中",
"传感器": [
{"名称": "相机", "状态": "正常"},
{"名称": "激光雷达", "状态": "正常"},
{"名称": "IMU", "状态": "警告"}
]
}
json_log(data, "机器人状态数据")
# 测试面板
panel(
"机器人控制系统初始化完成\n"
"等待接收用户命令...\n\n"
"使用 'help' 命令查看帮助信息",
"系统状态",
"bold blue"
)
def main():
"""主函数"""
section("日志模块测试", "关键")
test_simple_logging()
test_timing_logging()
test_section_logging()
test_rich_features()
success("所有测试完成!", "完成")
if __name__ == "__main__":
main()