feat: 初始化考培练系统项目
- 从服务器拉取完整代码 - 按框架规范整理项目结构 - 配置 Drone CI 测试环境部署 - 包含后端(FastAPI)、前端(Vue3)、管理端 技术栈: Vue3 + TypeScript + FastAPI + MySQL
This commit is contained in:
122
backend/verify_exam_settings.py
Normal file
122
backend/verify_exam_settings.py
Normal file
@@ -0,0 +1,122 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
验证考试设置功能是否正常工作
|
||||
"""
|
||||
import asyncio
|
||||
import json
|
||||
import httpx
|
||||
from datetime import datetime
|
||||
|
||||
BASE_URL = "http://localhost:8000"
|
||||
|
||||
async def main():
|
||||
async with httpx.AsyncClient() as client:
|
||||
# 1. 登录获取token
|
||||
print("=== 考试设置功能验证 ===\n")
|
||||
print("1. 登录管理员账号...")
|
||||
login_resp = await client.post(
|
||||
f"{BASE_URL}/api/v1/auth/login",
|
||||
json={"username": "admin", "password": "Admin123!"}
|
||||
)
|
||||
login_data = login_resp.json()
|
||||
if login_data['code'] != 200:
|
||||
print(f"登录失败: {login_data}")
|
||||
return
|
||||
|
||||
token = login_data["data"]["token"]["access_token"]
|
||||
headers = {"Authorization": f"Bearer {token}"}
|
||||
print("✓ 登录成功\n")
|
||||
|
||||
# 2. 获取课程7的当前考试设置
|
||||
print("2. 获取课程7的当前考试设置...")
|
||||
get_resp = await client.get(
|
||||
f"{BASE_URL}/api/v1/courses/7/exam-settings",
|
||||
headers=headers
|
||||
)
|
||||
get_data = get_resp.json()
|
||||
|
||||
if get_data['code'] == 200 and get_data['data']:
|
||||
print("✓ 成功获取考试设置")
|
||||
current = get_data['data']
|
||||
print(f"\n当前设置:")
|
||||
print(f" - 单选题: {current['single_choice_count']}题")
|
||||
print(f" - 多选题: {current['multiple_choice_count']}题")
|
||||
print(f" - 判断题: {current['true_false_count']}题")
|
||||
print(f" - 填空题: {current['fill_blank_count']}题")
|
||||
print(f" - 考试时长: {current['duration_minutes']}分钟")
|
||||
print(f" - 难度等级: {current['difficulty_level']}")
|
||||
print(f" - 是否启用: {'是' if current['is_enabled'] else '否'}")
|
||||
print(f" - 更新时间: {current['updated_at']}")
|
||||
else:
|
||||
print(f"✗ 获取失败: {get_data}")
|
||||
|
||||
# 3. 测试更新功能
|
||||
print("\n3. 测试更新考试设置...")
|
||||
test_settings = {
|
||||
"single_choice_count": 25,
|
||||
"multiple_choice_count": 12,
|
||||
"true_false_count": 10,
|
||||
"fill_blank_count": 6,
|
||||
"duration_minutes": 120,
|
||||
"difficulty_level": 5,
|
||||
"is_enabled": True
|
||||
}
|
||||
|
||||
update_resp = await client.post(
|
||||
f"{BASE_URL}/api/v1/courses/7/exam-settings",
|
||||
json=test_settings,
|
||||
headers=headers
|
||||
)
|
||||
update_data = update_resp.json()
|
||||
|
||||
if update_data['code'] == 200:
|
||||
print("✓ 成功更新考试设置")
|
||||
|
||||
# 4. 再次获取验证
|
||||
print("\n4. 再次获取验证更新...")
|
||||
verify_resp = await client.get(
|
||||
f"{BASE_URL}/api/v1/courses/7/exam-settings",
|
||||
headers=headers
|
||||
)
|
||||
verify_data = verify_resp.json()
|
||||
|
||||
if verify_data['code'] == 200 and verify_data['data']:
|
||||
updated = verify_data['data']
|
||||
print("\n更新后的设置:")
|
||||
print(f" - 单选题: {updated['single_choice_count']}题")
|
||||
print(f" - 多选题: {updated['multiple_choice_count']}题")
|
||||
print(f" - 判断题: {updated['true_false_count']}题")
|
||||
print(f" - 填空题: {updated['fill_blank_count']}题")
|
||||
print(f" - 考试时长: {updated['duration_minutes']}分钟")
|
||||
print(f" - 难度等级: {updated['difficulty_level']}")
|
||||
print(f" - 更新时间: {updated['updated_at']}")
|
||||
|
||||
# 验证是否正确更新
|
||||
all_correct = (
|
||||
updated['single_choice_count'] == test_settings['single_choice_count'] and
|
||||
updated['multiple_choice_count'] == test_settings['multiple_choice_count'] and
|
||||
updated['true_false_count'] == test_settings['true_false_count'] and
|
||||
updated['fill_blank_count'] == test_settings['fill_blank_count'] and
|
||||
updated['duration_minutes'] == test_settings['duration_minutes'] and
|
||||
updated['difficulty_level'] == test_settings['difficulty_level']
|
||||
)
|
||||
|
||||
if all_correct:
|
||||
print("\n✅ 考试设置功能完全正常!数据能够正确保存和读取。")
|
||||
else:
|
||||
print("\n❌ 数据更新不正确!")
|
||||
else:
|
||||
print(f"✗ 验证失败: {verify_data}")
|
||||
else:
|
||||
print(f"✗ 更新失败: {update_data}")
|
||||
|
||||
# 5. 提示前端检查
|
||||
print("\n=== 前端检查建议 ===")
|
||||
print("如果前端仍然显示默认值而不是实际保存的值,请检查:")
|
||||
print("1. 刷新页面(F5)后是否正确显示")
|
||||
print("2. 浏览器控制台是否有错误")
|
||||
print("3. Network面板中API请求是否成功")
|
||||
print("4. 清除浏览器缓存后重试")
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user