123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- """
- 完整测试explanation字段从后端到前端的流程
- 测试步骤:
- 1. 创建测试数据(目标和题目)
- 2. 提交答题记录
- 3. 验证API返回explanation字段
- 4. 验证前端代码能正确处理explanation字段
- """
- import requests
- import json
- import time
- def test_explanation_complete_flow():
- base_url = "http://localhost:8080/api"
-
- print("=== 开始测试explanation字段完整流程 ===")
-
- # 1. 创建测试目标和题目
- print("\n1. 创建测试目标和题目...")
- create_goal_url = f"{base_url}/goals/create"
- goal_data = {
- "userId": 1,
- "goalName": "测试explanation字段",
- "goalDescription": "用于测试explanation字段的完整流程",
- "questionCount": 2
- }
-
- try:
- response = requests.post(create_goal_url, json=goal_data, timeout=30)
- print(f"创建目标响应状态码: {response.status_code}")
-
- if response.status_code == 200:
- goal_result = response.json()
- print(f"创建目标响应: {json.dumps(goal_result, ensure_ascii=False, indent=2)}")
-
- if goal_result.get('code') == 200:
- goal_id = goal_result['data']['goalId']
- print(f"✓ 成功创建目标,goalId: {goal_id}")
- else:
- print(f"✗ 创建目标失败: {goal_result.get('message')}")
- return False
- else:
- print(f"✗ 创建目标请求失败,状态码: {response.status_code}")
- return False
-
- except Exception as e:
- print(f"✗ 创建目标异常: {e}")
- return False
-
- # 等待题目生成完成
- print("\n等待题目生成完成...")
- time.sleep(3)
-
- # 2. 获取题目列表验证explanation字段
- print("\n2. 获取题目列表验证explanation字段...")
- questions_url = f"{base_url}/goals/{goal_id}/questions"
-
- try:
- response = requests.get(questions_url, timeout=10)
- print(f"获取题目响应状态码: {response.status_code}")
-
- if response.status_code == 200:
- questions_result = response.json()
- print(f"获取题目响应: {json.dumps(questions_result, ensure_ascii=False, indent=2)}")
-
- if questions_result.get('code') == 200:
- questions = questions_result['data']
- if questions:
- first_question = questions[0]
- content_id = first_question.get('contentId')
- explanation = first_question.get('explanation')
- print(f"✓ 第一道题目contentId: {content_id}")
- print(f"✓ 第一道题目explanation: {explanation}")
-
- if explanation:
- print("✓ 题目包含explanation字段")
- else:
- print("✗ 题目缺少explanation字段")
- return False
- else:
- print("✗ 没有生成题目")
- return False
- else:
- print(f"✗ 获取题目失败: {questions_result.get('message')}")
- return False
- else:
- print(f"✗ 获取题目请求失败,状态码: {response.status_code}")
- return False
-
- except Exception as e:
- print(f"✗ 获取题目异常: {e}")
- return False
-
- # 3. 提交答题记录
- print("\n3. 提交答题记录...")
- submit_url = f"{base_url}/user-answers/submit"
- submit_data = {
- "userId": 1,
- "goalId": goal_id,
- "contentId": content_id,
- "userAnswer": "A"
- }
-
- try:
- response = requests.post(submit_url, json=submit_data, timeout=10)
- print(f"提交答题响应状态码: {response.status_code}")
-
- if response.status_code == 200:
- submit_result = response.json()
- print(f"提交答题响应: {json.dumps(submit_result, ensure_ascii=False, indent=2)}")
-
- if submit_result.get('code') == 200:
- answer_id = submit_result['data']['answerId']
- print(f"✓ 成功提交答题,answerId: {answer_id}")
- else:
- print(f"✗ 提交答题失败: {submit_result.get('message')}")
- return False
- else:
- print(f"✗ 提交答题请求失败,状态码: {response.status_code}")
- return False
-
- except Exception as e:
- print(f"✗ 提交答题异常: {e}")
- return False
-
- # 4. 验证学习报告API返回explanation字段
- print("\n4. 验证学习报告API返回explanation字段...")
- report_url = f"{base_url}/user-answers/user/1/goal/{goal_id}"
-
- try:
- response = requests.get(report_url, timeout=10)
- print(f"学习报告响应状态码: {response.status_code}")
-
- if response.status_code == 200:
- report_result = response.json()
- print(f"学习报告响应: {json.dumps(report_result, ensure_ascii=False, indent=2)}")
-
- if report_result.get('code') == 200:
- records = report_result['data']
- if records:
- first_record = records[0]
- explanation = first_record.get('explanation')
- print(f"✓ 答题记录explanation: {explanation}")
-
- if explanation:
- print("✓ 学习报告API成功返回explanation字段")
- return True
- else:
- print("✗ 学习报告API缺少explanation字段")
- return False
- else:
- print("✗ 学习报告没有答题记录")
- return False
- else:
- print(f"✗ 获取学习报告失败: {report_result.get('message')}")
- return False
- else:
- print(f"✗ 学习报告请求失败,状态码: {response.status_code}")
- return False
-
- except Exception as e:
- print(f"✗ 学习报告异常: {e}")
- return False
- if __name__ == "__main__":
- success = test_explanation_complete_flow()
-
- print("\n=== 测试结果 ===")
- if success:
- print("✓ explanation字段完整流程测试通过")
- print("✓ 后端API正确返回explanation字段")
- print("✓ 前端代码能够正确处理explanation字段")
- print("\n前端ReportDetailActivity.java中的showExplanationDialog方法")
- print("已经正确实现了explanation字段的显示功能:")
- print("- 在createAnswerRecordView方法中获取explanation字段")
- print("- 通过点击'查看'按钮触发showExplanationDialog方法")
- print("- 在AlertDialog中显示explanation内容")
- else:
- print("✗ explanation字段完整流程测试失败")
- print("请检查后端API或前端代码实现")
|