2025-05-17 12:34:02 +08:00
|
|
|
#!/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(),
|
2025-05-18 15:53:07 +08:00
|
|
|
observe=observe,
|
|
|
|
save_log=True
|
2025-05-17 12:34:02 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
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()
|