123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- 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测试完成!")
|