test_redis_fix_validation.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. """
  2. Redis集成修复验证测试
  3. 这个脚本用于快速验证Redis集成的修复是否有效
  4. """
  5. import requests
  6. import json
  7. import time
  8. def test_ask_agent_basic():
  9. """测试基本的ask_agent功能"""
  10. base_url = "http://localhost:8084/api/v0"
  11. print("=== Redis集成修复验证测试 ===\n")
  12. # 测试1:第一次请求(应该成功)
  13. print("1. 测试第一次请求...")
  14. print(" (注意:第一次请求可能需要较长时间,请耐心等待...)")
  15. response1 = requests.post(
  16. f"{base_url}/ask_agent",
  17. json={"question": "服务区有多少个?"},
  18. timeout=120 # 增加到120秒,适应较慢的响应
  19. )
  20. print(f" 状态码: {response1.status_code}")
  21. result1 = response1.json()
  22. print(f" 成功: {result1.get('success')}")
  23. print(f" 消息: {result1.get('message')}")
  24. if result1.get('success'):
  25. data = result1.get('data', {})
  26. print(f" 响应类型: {data.get('type')}")
  27. print(f" 响应文本: {data.get('response_text', '')[:50]}...")
  28. print(f" 是否缓存: {data.get('from_cache', False)}")
  29. print(f" 对话ID: {data.get('conversation_id')}")
  30. else:
  31. print(f" 错误: {json.dumps(result1, indent=2, ensure_ascii=False)}")
  32. # 等待一下
  33. time.sleep(1)
  34. # 测试2:第二次相同请求(应该使用缓存)
  35. print("\n2. 测试第二次请求(相同问题,应该使用缓存)...")
  36. response2 = requests.post(
  37. f"{base_url}/ask_agent",
  38. json={"question": "服务区有多少个?"},
  39. timeout=60 # 也增加超时时间,虽然缓存应该更快
  40. )
  41. print(f" 状态码: {response2.status_code}")
  42. result2 = response2.json()
  43. print(f" 成功: {result2.get('success')}")
  44. if result2.get('success'):
  45. data = result2.get('data', {})
  46. print(f" 是否缓存: {data.get('from_cache', False)}")
  47. print(f" 响应文本: {data.get('response_text', '')[:50]}...")
  48. # 验证缓存功能
  49. if data.get('from_cache'):
  50. print("\n✅ 缓存功能正常工作!")
  51. else:
  52. print("\n⚠️ 缓存功能可能有问题,第二次请求没有使用缓存")
  53. else:
  54. print(f" 错误: {json.dumps(result2, indent=2, ensure_ascii=False)}")
  55. print("\n❌ 第二次请求失败,可能是缓存格式问题")
  56. # 测试3:测试对话管理API
  57. print("\n3. 测试对话管理API...")
  58. try:
  59. stats_response = requests.get(f"{base_url}/conversation_stats", timeout=5)
  60. if stats_response.status_code == 200:
  61. stats = stats_response.json()
  62. if stats.get('success'):
  63. print(" ✅ 对话统计API正常")
  64. print(f" 总对话数: {stats.get('data', {}).get('total_conversations', 0)}")
  65. print(f" 总用户数: {stats.get('data', {}).get('total_users', 0)}")
  66. else:
  67. print(" ⚠️ 对话统计API返回失败")
  68. else:
  69. print(f" ❌ 对话统计API错误: {stats_response.status_code}")
  70. except Exception as e:
  71. print(f" ❌ 对话统计API异常: {str(e)}")
  72. print("\n=== 测试完成 ===")
  73. # 返回测试结果
  74. return {
  75. "first_request_success": result1.get('success', False),
  76. "second_request_success": result2.get('success', False),
  77. "cache_working": result2.get('data', {}).get('from_cache', False) if result2.get('success') else False
  78. }
  79. if __name__ == "__main__":
  80. try:
  81. results = test_ask_agent_basic()
  82. print("\n测试结果汇总:")
  83. print(f"- 第一次请求: {'✅ 成功' if results['first_request_success'] else '❌ 失败'}")
  84. print(f"- 第二次请求: {'✅ 成功' if results['second_request_success'] else '❌ 失败'}")
  85. print(f"- 缓存功能: {'✅ 正常' if results['cache_working'] else '❌ 异常'}")
  86. if all(results.values()):
  87. print("\n🎉 所有测试通过!Redis集成修复成功!")
  88. else:
  89. print("\n❗ 部分测试失败,请检查日志")
  90. except Exception as e:
  91. print(f"\n❌ 测试异常: {str(e)}")
  92. print("请确保Flask服务正在运行 (python citu_app.py)")