test_api_changes.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #!/usr/bin/env python3
  2. """
  3. 测试Data Pipeline API的修改
  4. 验证去除db_connection必填参数后的功能
  5. """
  6. import requests
  7. import json
  8. def test_create_task():
  9. """测试创建任务(不需要db_connection参数)"""
  10. url = "http://localhost:8084/api/v0/data_pipeline/tasks"
  11. # 新的请求格式 - 不需要db_connection
  12. data = {
  13. "table_list_file": "data_pipeline/tables.txt",
  14. "business_context": "高速公路服务区管理系统测试",
  15. "db_name": "highway_db", # 可选参数
  16. "enable_sql_validation": True,
  17. "enable_llm_repair": True,
  18. "modify_original_file": True,
  19. "enable_training_data_load": True
  20. }
  21. print("测试创建任务(使用app_config配置的数据库连接)...")
  22. print(f"请求数据: {json.dumps(data, ensure_ascii=False, indent=2)}")
  23. try:
  24. response = requests.post(url, json=data, timeout=10)
  25. print(f"响应状态码: {response.status_code}")
  26. print(f"响应内容: {json.dumps(response.json(), ensure_ascii=False, indent=2)}")
  27. if response.status_code == 201:
  28. return response.json().get('data', {}).get('task_id')
  29. else:
  30. print("任务创建失败")
  31. return None
  32. except Exception as e:
  33. print(f"请求失败: {e}")
  34. return None
  35. def test_old_format():
  36. """测试旧格式是否还能工作(应该报错)"""
  37. url = "http://localhost:8084/api/v0/data_pipeline/tasks"
  38. # 旧的请求格式 - 包含db_connection
  39. data = {
  40. "db_connection": "postgresql://user:pass@host:5432/dbname",
  41. "table_list_file": "data_pipeline/tables.txt",
  42. "business_context": "测试旧格式"
  43. }
  44. print("\n测试旧格式(包含db_connection,应该被忽略)...")
  45. print(f"请求数据: {json.dumps(data, ensure_ascii=False, indent=2)}")
  46. try:
  47. response = requests.post(url, json=data, timeout=10)
  48. print(f"响应状态码: {response.status_code}")
  49. print(f"响应内容: {json.dumps(response.json(), ensure_ascii=False, indent=2)}")
  50. except Exception as e:
  51. print(f"请求失败: {e}")
  52. def test_missing_params():
  53. """测试缺少必需参数的情况"""
  54. url = "http://localhost:8084/api/v0/data_pipeline/tasks"
  55. # 缺少必需参数
  56. data = {
  57. "business_context": "只有业务上下文"
  58. }
  59. print("\n测试缺少必需参数(应该返回400错误)...")
  60. print(f"请求数据: {json.dumps(data, ensure_ascii=False, indent=2)}")
  61. try:
  62. response = requests.post(url, json=data, timeout=10)
  63. print(f"响应状态码: {response.status_code}")
  64. print(f"响应内容: {json.dumps(response.json(), ensure_ascii=False, indent=2)}")
  65. except Exception as e:
  66. print(f"请求失败: {e}")
  67. if __name__ == "__main__":
  68. print("=" * 60)
  69. print("Data Pipeline API 修改测试")
  70. print("=" * 60)
  71. # 测试新格式
  72. task_id = test_create_task()
  73. # 测试旧格式
  74. test_old_format()
  75. # 测试缺少参数
  76. test_missing_params()
  77. print("\n" + "=" * 60)
  78. print("测试完成")
  79. print("=" * 60)
  80. if task_id:
  81. print(f"成功创建的任务ID: {task_id}")
  82. print(f"可以通过以下命令查看任务状态:")
  83. print(f"curl http://localhost:8084/api/v0/data_pipeline/tasks/{task_id}")