import requests import json import time # 服务器配置 BASE_URL = "http://localhost:8080" def test_ai_question_generation_with_difficulty(): """ 测试AI生成题目接口的difficulty字段功能 """ print("=== AI题目生成difficulty字段测试 ===") # 测试不同难度级别 difficulties = ["简单", "中等", "困难"] for difficulty in difficulties: print(f"\n--- 测试难度级别: {difficulty} ---") # 构建请求参数 params = { "goalId": 1, # 使用测试goalId "subject": "数学", "goalType": "选择", "difficulty": difficulty, "totalQuantity": 2, "goalContent": "测试题目生成" } try: # 调用AI生成题目接口 print(f"发送请求参数: {json.dumps(params, ensure_ascii=False)}") response = requests.post( f"{BASE_URL}/api/ai/auto-generate", params=params, timeout=60 ) print(f"响应状态码: {response.status_code}") if response.status_code == 200: result = response.json() print(f"响应数据: {json.dumps(result, ensure_ascii=False, indent=2)}") # 检查返回的goalId if 'goalId' in result: goal_id = result['goalId'] print(f"生成的goalId: {goal_id}") # 等待一下让数据保存完成 time.sleep(2) # 获取生成的题目并检查difficulty字段 check_questions_difficulty(goal_id, difficulty) else: print("❌ 响应中没有goalId") else: print(f"❌ 请求失败: {response.text}") except Exception as e: print(f"❌ 请求异常: {str(e)}") print("-" * 50) def check_questions_difficulty(goal_id, expected_difficulty): """ 检查生成题目的difficulty字段 """ try: # 获取题目列表 response = requests.get( f"{BASE_URL}/api/ai/questions/{goal_id}", timeout=30 ) if response.status_code == 200: questions = response.json() print(f"获取到 {len(questions)} 道题目") for i, question in enumerate(questions, 1): difficulty = question.get('difficulty') print(f"题目 {i}:") print(f" - ID: {question.get('id')}") print(f" - 题目: {question.get('question', '')[:50]}...") print(f" - 难度: {difficulty}") print(f" - 预期难度: {expected_difficulty}") if difficulty == expected_difficulty: print(f" ✅ 难度字段正确") elif difficulty is None: print(f" ❌ 难度字段为null") else: print(f" ⚠️ 难度字段不匹配") print() else: print(f"❌ 获取题目失败: {response.status_code} - {response.text}") except Exception as e: print(f"❌ 检查题目异常: {str(e)}") def check_database_difficulty(): """ 直接检查数据库中的difficulty字段状态 """ print("\n=== 检查数据库difficulty字段状态 ===") try: # 获取最近的题目数据 - 使用goalId=1来获取题目 response = requests.get( f"{BASE_URL}/api/ai/questions/1", timeout=30 ) if response.status_code == 200: data = response.json() questions = data.get('data', []) print(f"获取到最近 {len(questions)} 道题目") null_count = 0 valid_count = 0 for i, question in enumerate(questions): # 确保question是字典类型 if isinstance(question, dict): difficulty = question.get('difficulty') content = question.get('content', '未知题目') print(f"题目 {i+1}: {content[:30]}... - difficulty: {difficulty}") if difficulty: print(f"✅ 题目 {i+1} difficulty字段正常: {difficulty}") valid_count += 1 else: print(f"❌ 题目 {i+1} difficulty字段为空或null") null_count += 1 else: print(f"❌ 题目 {i+1} 数据格式异常: {type(question)}") null_count += 1 print(f"统计结果:") print(f" - 有效difficulty字段: {valid_count}") print(f" - null difficulty字段: {null_count}") if null_count > 0: print(f"⚠️ 发现 {null_count} 个null difficulty字段") else: print(f"✅ 所有difficulty字段都有效") else: print(f"❌ 获取最近题目失败: {response.status_code}") except Exception as e: print(f"❌ 检查数据库异常: {str(e)}") if __name__ == "__main__": print("开始测试AI生成题目接口的difficulty字段功能...") # 测试AI题目生成 test_ai_question_generation_with_difficulty() # 检查数据库状态 check_database_difficulty() print("\n测试完成!")