test_api_format.py 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #!/usr/bin/env python3
  2. """
  3. 测试API响应格式是否符合标准化要求
  4. 验证是否包含 code 字段和其他必需字段
  5. """
  6. import requests
  7. import json
  8. from datetime import datetime
  9. def test_api_response_format():
  10. """测试API响应格式"""
  11. base_url = "http://localhost:8084"
  12. # 测试用例
  13. test_cases = [
  14. {
  15. "name": "获取用户对话列表",
  16. "url": f"{base_url}/api/v0/react/users/wang10/conversations?limit=3",
  17. "method": "GET"
  18. },
  19. {
  20. "name": "获取特定对话详情",
  21. "url": f"{base_url}/api/v0/react/users/wang10/conversations/wang10:20250717211620915",
  22. "method": "GET"
  23. }
  24. ]
  25. print(f"🧪 开始测试API响应格式 - {datetime.now()}")
  26. print("=" * 60)
  27. for i, test_case in enumerate(test_cases, 1):
  28. print(f"\n📋 测试 {i}: {test_case['name']}")
  29. print(f"🔗 URL: {test_case['url']}")
  30. try:
  31. response = requests.get(test_case['url'], timeout=30)
  32. print(f"📊 HTTP状态码: {response.status_code}")
  33. if response.status_code == 200:
  34. try:
  35. data = response.json()
  36. print(f"✅ JSON解析成功")
  37. # 检查必需字段
  38. required_fields = ["code", "success", "message", "data"]
  39. missing_fields = []
  40. for field in required_fields:
  41. if field not in data:
  42. missing_fields.append(field)
  43. if missing_fields:
  44. print(f"❌ 缺少必需字段: {missing_fields}")
  45. else:
  46. print(f"✅ 所有必需字段都存在")
  47. # 显示关键字段值
  48. print(f"📋 响应字段:")
  49. print(f" - code: {data.get('code')}")
  50. print(f" - success: {data.get('success')}")
  51. print(f" - message: {data.get('message')}")
  52. print(f" - data类型: {type(data.get('data'))}")
  53. if 'data' in data and isinstance(data['data'], dict):
  54. data_keys = list(data['data'].keys())
  55. print(f" - data字段: {data_keys}")
  56. # 显示完整响应(格式化)
  57. print(f"\n📄 完整响应:")
  58. print(json.dumps(data, ensure_ascii=False, indent=2))
  59. except json.JSONDecodeError as e:
  60. print(f"❌ JSON解析失败: {e}")
  61. print(f"📄 原始响应: {response.text}")
  62. else:
  63. print(f"❌ HTTP请求失败")
  64. print(f"📄 响应内容: {response.text}")
  65. except requests.exceptions.RequestException as e:
  66. print(f"❌ 请求异常: {e}")
  67. print("-" * 40)
  68. print(f"\n🏁 测试完成 - {datetime.now()}")
  69. if __name__ == "__main__":
  70. test_api_response_format()