#!/usr/bin/env python3 """ 测试修复后的菜单功能 """ import sys import os # 添加项目路径 sys.path.insert(0, os.path.dirname(__file__)) try: from gx_gp_monitor.wechat.message_handler import WeChatMessageHandler from gx_gp_monitor.core.config_manager import load_config def test_menu_keys(): """测试菜单key处理""" print("🧪 测试菜单key处理...") handler = WeChatMessageHandler() # 测试旧菜单key test_cases = [ ("latest_announcements", "最新公告(兼容旧key)"), ("announcements_by_type", "按类型查看公告"), ("search_announcements", "搜索公告(兼容旧key)"), ("latest_news", "最新公告"), ("keyword_search", "关键词搜索"), ("system_status", "系统状态"), ("help_guide", "使用说明"), ] results = {} for key, description in test_cases: try: # 模拟事件处理 result = handler.handle_event('click', key, 'test_user') results[key] = result is not None and "未知菜单项" not in (result or "") print(f"✅ {description}: {'通过' if results[key] else '失败'}") except Exception as e: print(f"❌ {description}: 异常 - {str(e)}") results[key] = False success_count = sum(1 for success in results.values() if success) print(f"\n📊 菜单key测试结果: {success_count}/{len(test_cases)} 通过") return success_count == len(test_cases) def test_text_commands(): """测试文本命令处理""" print("\n🧪 测试文本命令处理...") handler = WeChatMessageHandler() # 测试公告类型查询 test_cases = [ ("采购公告", "采购公告查询"), ("结果公告", "结果公告查询"), ("更正公告", "更正公告查询"), ] results = {} for command, description in test_cases: try: result = handler.handle_text_message(command, 'test_user') results[command] = result is not None print(f"✅ {description}: {'通过' if results[command] else '失败'}") except Exception as e: print(f"❌ {description}: 异常 - {str(e)}") results[command] = False success_count = sum(1 for success in results.values() if success) print(f"\n📊 文本命令测试结果: {success_count}/{len(test_cases)} 通过") return success_count == len(test_cases) def main(): """主测试函数""" # 加载配置 try: load_config() print("✅ 配置加载成功") except Exception as e: print(f"❌ 配置加载失败: {e}") return False print("🚀 测试修复后的菜单功能...") print("=" * 50) # 测试菜单key test1_passed = test_menu_keys() # 测试文本命令 test2_passed = test_text_commands() print("\n" + "=" * 50) if test1_passed and test2_passed: print("🎉 所有菜单功能修复测试通过!") print("✅ 旧菜单key现在可以正常工作") print("✅ 新增了公告类型查询功能") else: print("⚠️ 部分测试失败,请检查上述错误信息") return test1_passed and test2_passed if __name__ == "__main__": main() except ImportError as e: print(f"❌ 导入失败: {e}", file=sys.stderr) sys.exit(1) except Exception as e: print(f"❌ 测试失败: {e}", file=sys.stderr) sys.exit(1)