mi-task/test/test_log.py

138 lines
3.9 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
日志系统测试 - 演示基本日志功能
"""
import time
import sys
import os
import random
# 添加父目录到路径以便能够导入utils
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
from utils.log_helper import (
LogHelper, get_logger, section, info, debug, warning, error, success, timing,
table, progress, syntax, json_log, panel
)
def test_basic_logs():
"""测试基本日志功能"""
section("基本日志测试", "测试")
# 测试各种日志级别
debug("这是一条调试信息", "调试")
info("这是一条普通信息", "信息")
warning("这是一条警告信息", "警告")
error("这是一条错误信息", "错误")
success("这是一条成功信息", "成功")
# 测试不带emoji的日志
info("这是一条没有emoji的普通信息")
warning("这是一条没有emoji的警告信息")
# 测试计时功能
start_time = time.time()
time.sleep(0.5) # 模拟耗时操作
elapsed = time.time() - start_time
timing("耗时操作", elapsed)
def test_rich_features():
"""测试Rich库的高级功能"""
section("Rich功能测试", "测试")
# 测试表格
columns = ["参数", "数值", "状态", "备注"]
rows = [
["电池电量", "85%", "正常", ""],
["系统温度", "32.5°C", "正常", ""],
["CPU负载", "15%", "正常", ""],
["内存使用", "45%", "正常", ""],
]
table("系统状态", columns, rows, "当前系统状态指标")
# 测试进度条
items = list(range(10))
for item in progress(items, "处理数据", unit=""):
time.sleep(0.1) # 模拟处理时间
# 测试代码高亮
code = """
def hello_robot(name):
\"\"\"向机器人问好\"\"\"
print(f"Hello, {name}!")
return f"Robot {name} is now active"
# 调用函数
result = hello_robot("MI-1")
"""
syntax(code, "python", "示例代码")
# 测试JSON美化
data = {
"robot": {
"name": "MI-Explorer",
"type": "四足机器人",
"sensors": ["相机", "IMU", "里程计"],
"position": {"x": 1.2, "y": 3.4, "z": 0.0},
"status": "运行中"
},
"tasks": [
{"id": 1, "name": "探索", "status": "完成"},
{"id": 2, "name": "导航", "status": "进行中"},
{"id": 3, "name": "抓取", "status": "等待"}
]
}
json_log(data, "机器人状态数据")
# 测试面板
panel(
"系统诊断结果:\n"
"- 所有子系统工作正常\n"
"- 电池电量: 85%\n"
"- 软件版本: v1.2.5\n"
"- 运行时间: 2小时35分钟",
"诊断结果",
"bold green"
)
def test_custom_logger():
"""测试自定义日志记录器"""
section("自定义日志记录器测试", "测试")
# 创建自定义日志记录器
robot_logger = LogHelper("四足机器人")
vision_logger = LogHelper("视觉系统")
motion_logger = LogHelper("运动控制")
# 使用不同的日志记录器
robot_logger.info("机器人初始化完成", "启动")
vision_logger.warning("光照条件不佳", "警告")
motion_logger.success("到达目标位置", "位置")
# 模拟一个错误情况
try:
raise ValueError("传感器数据异常")
except Exception as e:
vision_logger.error(f"处理图像时出错: {e}", "错误")
def main():
"""主函数"""
panel(
"日志系统测试程序\n"
"此程序演示日志系统的各项功能",
"测试信息",
"bold cyan"
)
test_basic_logs()
test_rich_features()
test_custom_logger()
section("测试完成", "完成")
success("日志系统功能测试全部完成", "完成")
if __name__ == "__main__":
main()