test_goalid_logging.py 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. 测试goalId日志记录
  5. 用于验证添加的日志是否能正确显示goalId的值
  6. """
  7. import requests
  8. import json
  9. import time
  10. def test_goalid_logging():
  11. """
  12. 测试goalId日志记录功能
  13. """
  14. base_url = "http://localhost:8080"
  15. print("=== 测试goalId日志记录功能 ===")
  16. # 测试用例1: 使用正常的goalId
  17. print("\n--- 测试用例1: 使用正常goalId ---")
  18. test_data_1 = {
  19. "userId": 1,
  20. "goalId": 13, # 使用新的goalId
  21. "subject": "数学",
  22. "knowledgePoint": "测试goalId日志记录",
  23. "difficulty": "简单",
  24. "type": "选择题",
  25. "totalQuantity": 2
  26. }
  27. print(f"请求数据: {json.dumps(test_data_1, ensure_ascii=False, indent=2)}")
  28. try:
  29. response_1 = requests.post(
  30. f"{base_url}/api/coze/generate-questions",
  31. json=test_data_1,
  32. timeout=30
  33. )
  34. if response_1.status_code == 200:
  35. result_1 = response_1.json()
  36. print(f"\n响应结果: {json.dumps(result_1, ensure_ascii=False, indent=2)}")
  37. if result_1.get('success'):
  38. questions = result_1.get('questions', [])
  39. print(f"\n✅ 成功生成 {len(questions)} 道题目")
  40. for i, question in enumerate(questions, 1):
  41. print(f"题目{i} - detailId: {question.get('detailId')}, goalId: {question.get('goalId')}")
  42. else:
  43. print("❌ 题目生成失败")
  44. else:
  45. print(f"❌ API调用失败: {response_1.status_code}")
  46. except Exception as e:
  47. print(f"❌ 测试用例1异常: {e}")
  48. # 等待一下,让日志输出完整
  49. time.sleep(2)
  50. # 测试用例2: 使用null goalId(模拟Android应用的错误情况)
  51. print("\n--- 测试用例2: 使用null goalId ---")
  52. test_data_2 = {
  53. "userId": 1,
  54. "goalId": None, # 模拟goalId为null的情况
  55. "subject": "数学",
  56. "knowledgePoint": "测试null goalId",
  57. "difficulty": "简单",
  58. "type": "选择题",
  59. "totalQuantity": 1
  60. }
  61. print(f"请求数据: {json.dumps(test_data_2, ensure_ascii=False, indent=2)}")
  62. try:
  63. response_2 = requests.post(
  64. f"{base_url}/api/coze/generate-questions",
  65. json=test_data_2,
  66. timeout=30
  67. )
  68. if response_2.status_code == 200:
  69. result_2 = response_2.json()
  70. print(f"\n响应结果: {json.dumps(result_2, ensure_ascii=False, indent=2)}")
  71. if result_2.get('success'):
  72. questions = result_2.get('questions', [])
  73. print(f"\n✅ 成功生成 {len(questions)} 道题目")
  74. for i, question in enumerate(questions, 1):
  75. print(f"题目{i} - detailId: {question.get('detailId')}, goalId: {question.get('goalId')}")
  76. else:
  77. print("❌ 题目生成失败(预期结果,因为goalId为null)")
  78. else:
  79. print(f"❌ API调用失败: {response_2.status_code}")
  80. except Exception as e:
  81. print(f"❌ 测试用例2异常: {e}")
  82. # 测试用例3: 不传goalId字段
  83. print("\n--- 测试用例3: 不传goalId字段 ---")
  84. test_data_3 = {
  85. "userId": 1,
  86. # 不包含goalId字段
  87. "subject": "数学",
  88. "knowledgePoint": "测试缺失goalId",
  89. "difficulty": "简单",
  90. "type": "选择题",
  91. "totalQuantity": 1
  92. }
  93. print(f"请求数据: {json.dumps(test_data_3, ensure_ascii=False, indent=2)}")
  94. try:
  95. response_3 = requests.post(
  96. f"{base_url}/api/coze/generate-questions",
  97. json=test_data_3,
  98. timeout=30
  99. )
  100. if response_3.status_code == 200:
  101. result_3 = response_3.json()
  102. print(f"\n响应结果: {json.dumps(result_3, ensure_ascii=False, indent=2)}")
  103. if result_3.get('success'):
  104. questions = result_3.get('questions', [])
  105. print(f"\n✅ 成功生成 {len(questions)} 道题目")
  106. for i, question in enumerate(questions, 1):
  107. print(f"题目{i} - detailId: {question.get('detailId')}, goalId: {question.get('goalId')}")
  108. else:
  109. print("❌ 题目生成失败(预期结果,因为缺失goalId)")
  110. else:
  111. print(f"❌ API调用失败: {response_3.status_code}")
  112. except Exception as e:
  113. print(f"❌ 测试用例3异常: {e}")
  114. print("\n=== 测试完成,请查看服务器日志中的🔍标记的详细goalId信息 ===")
  115. print("注意观察日志中goalId的值变化,特别是:")
  116. print("1. 接收请求时的goalId值")
  117. print("2. 设置实体goalId前后的值")
  118. print("3. 数据库保存前后的goalId值")
  119. print("4. 转换响应对象时的goalId值")
  120. print("5. 返回给前端的goalId值")
  121. if __name__ == "__main__":
  122. test_goalid_logging()