simple_achievement_test.py 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import requests
  2. import json
  3. # 服务器配置
  4. BASE_URL = "http://localhost:8080/api"
  5. def get_user_achievements(user_id):
  6. """获取用户成就"""
  7. url = f"{BASE_URL}/achievements/user/{user_id}"
  8. response = requests.get(url)
  9. return response
  10. def update_achievement_progress(user_id, achievement_id, new_value):
  11. """直接更新成就进度"""
  12. url = f"{BASE_URL}/achievements/user/{user_id}/achievement/{achievement_id}/progress"
  13. data = {"currentValue": new_value}
  14. response = requests.put(url, json=data)
  15. return response
  16. def test_simple_achievement_update():
  17. """简单测试成就更新"""
  18. print("=== 简单成就更新测试 ===")
  19. # 使用已存在的用户ID(从之前的测试可以看到有用户ID 5, 6, 7)
  20. user_id = 5
  21. print(f"\n1. 检查用户 {user_id} 的成就")
  22. achievements_response = get_user_achievements(user_id)
  23. if achievements_response.status_code == 200:
  24. achievements = achievements_response.json()
  25. print(f"成就数量: {len(achievements)}")
  26. # 找到学习时长成就
  27. study_time_achievements = [a for a in achievements if 'STUDY_TIME' in a['type']]
  28. print(f"\n学习时长成就:")
  29. for achievement in study_time_achievements:
  30. print(f" ID: {achievement['achievementId']}, {achievement['title']}: {achievement['currentValue']}/{achievement['targetValue']} (已获得: {achievement['isAchieved']})")
  31. if study_time_achievements:
  32. # 测试更新第一个学习时长成就
  33. first_achievement = study_time_achievements[0]
  34. achievement_id = first_achievement['achievementId']
  35. target_value = first_achievement['targetValue']
  36. print(f"\n2. 更新成就 {achievement_id} 的进度到 {target_value}")
  37. update_response = update_achievement_progress(user_id, achievement_id, target_value)
  38. if update_response.status_code == 200:
  39. updated_achievement = update_response.json()
  40. print(f"更新成功: {updated_achievement['title']} - 已获得: {updated_achievement['isAchieved']}")
  41. else:
  42. print(f"更新失败: {update_response.status_code} - {update_response.text}")
  43. # 再次检查成就状态
  44. print(f"\n3. 再次检查成就状态")
  45. achievements_response = get_user_achievements(user_id)
  46. if achievements_response.status_code == 200:
  47. achievements = achievements_response.json()
  48. study_time_achievements = [a for a in achievements if 'STUDY_TIME' in a['type']]
  49. for achievement in study_time_achievements:
  50. status = "✅ 已获得" if achievement['isAchieved'] else "❌ 未获得"
  51. print(f" {achievement['title']}: {achievement['currentValue']}/{achievement['targetValue']} {status}")
  52. completed_count = len([a for a in achievements if a['isAchieved']])
  53. print(f"\n总计已完成成就: {completed_count}")
  54. if completed_count > 0:
  55. print("✅ 成就更新功能正常!")
  56. else:
  57. print("❌ 成就更新功能有问题")
  58. else:
  59. print(f"获取成就失败: {achievements_response.status_code} - {achievements_response.text}")
  60. if __name__ == "__main__":
  61. test_simple_achievement_update()