test_qa_apis.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #!/usr/bin/env python
  2. """
  3. QA反馈API测试脚本
  4. 用于验证所有API端点是否正常工作
  5. """
  6. import requests
  7. import json
  8. # 配置
  9. BASE_URL = "http://localhost:8084" # 根据你的端口配置
  10. API_PREFIX = "/api/v0/qa_feedback"
  11. def test_api(method, endpoint, data=None, expected_status=200):
  12. """测试API端点"""
  13. url = f"{BASE_URL}{API_PREFIX}{endpoint}"
  14. try:
  15. if method == "GET":
  16. response = requests.get(url)
  17. elif method == "POST":
  18. response = requests.post(url, json=data, headers={'Content-Type': 'application/json'})
  19. elif method == "PUT":
  20. response = requests.put(url, json=data, headers={'Content-Type': 'application/json'})
  21. elif method == "DELETE":
  22. response = requests.delete(url)
  23. print(f"\n{'='*60}")
  24. print(f"测试: {method} {endpoint}")
  25. print(f"URL: {url}")
  26. print(f"状态码: {response.status_code}")
  27. print(f"响应:")
  28. try:
  29. print(json.dumps(response.json(), indent=2, ensure_ascii=False))
  30. except:
  31. print(response.text)
  32. return response.status_code == expected_status
  33. except Exception as e:
  34. print(f"❌ 测试失败: {e}")
  35. return False
  36. def main():
  37. """主测试函数"""
  38. print("🚀 开始测试QA反馈模块API...")
  39. # 1. 测试统计API (GET)
  40. print("\n📊 测试统计API")
  41. test_api("GET", "/stats")
  42. # 2. 测试查询API (POST)
  43. print("\n🔍 测试查询API")
  44. test_api("POST", "/query", {
  45. "page": 1,
  46. "page_size": 10
  47. })
  48. # 3. 测试添加反馈API (POST)
  49. print("\n➕ 测试添加反馈API")
  50. add_result = test_api("POST", "/add", {
  51. "question": "测试问题",
  52. "sql": "SELECT 1 as test",
  53. "is_thumb_up": True,
  54. "user_id": "test_user"
  55. })
  56. # 4. 测试训练API (POST) - 重点测试
  57. print("\n⭐ 测试训练API (重点)")
  58. test_api("POST", "/add_to_training", {
  59. "feedback_ids": [1, 2, 3]
  60. }, expected_status=404) # 可能没有这些ID,但API应该存在
  61. # 5. 测试更新API (PUT)
  62. print("\n✏️ 测试更新API")
  63. test_api("PUT", "/update/1", {
  64. "question": "更新的问题"
  65. }, expected_status=404) # 可能没有ID=1的记录
  66. # 6. 测试删除API (DELETE)
  67. print("\n🗑️ 测试删除API")
  68. test_api("DELETE", "/delete/999", expected_status=404) # 测试不存在的ID
  69. print(f"\n{'='*60}")
  70. print("🎯 测试完成!")
  71. print("📝 重点关注训练API是否返回正确的错误信息而不是'API not ported'")
  72. if __name__ == "__main__":
  73. main()