feat: 初始化考培练系统项目
- 从服务器拉取完整代码 - 按框架规范整理项目结构 - 配置 Drone CI 测试环境部署 - 包含后端(FastAPI)、前端(Vue3)、管理端 技术栈: Vue3 + TypeScript + FastAPI + MySQL
This commit is contained in:
117
tests/test_practice_sessions_api.py
Normal file
117
tests/test_practice_sessions_api.py
Normal file
@@ -0,0 +1,117 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
测试陪练记录列表API
|
||||
"""
|
||||
import requests
|
||||
import json
|
||||
|
||||
# API基础地址
|
||||
BASE_URL = "http://120.79.247.16"
|
||||
|
||||
def login(username: str, password: str):
|
||||
"""登录获取token"""
|
||||
url = f"https://aiedu.ireborn.com.cn/api/v1/auth/login"
|
||||
data = {
|
||||
"username": username,
|
||||
"password": password
|
||||
}
|
||||
print(f"正在登录: {username}")
|
||||
response = requests.post(url, json=data, verify=False)
|
||||
print(f"登录响应: {response.status_code}")
|
||||
result = response.json()
|
||||
print(f"登录结果: {json.dumps(result, ensure_ascii=False, indent=2)}")
|
||||
|
||||
if response.status_code == 200 and result.get('code') == 200:
|
||||
token = result['data'].get('access_token')
|
||||
print(f"✓ 登录成功,Token: {token[:20]}...")
|
||||
return token
|
||||
else:
|
||||
print(f"✗ 登录失败")
|
||||
return None
|
||||
|
||||
def get_practice_sessions(token: str):
|
||||
"""获取陪练记录列表"""
|
||||
url = f"https://aiedu.ireborn.com.cn/api/v1/practice/sessions/list"
|
||||
headers = {
|
||||
"Authorization": f"Bearer {token}"
|
||||
}
|
||||
params = {
|
||||
"page": 1,
|
||||
"size": 20
|
||||
}
|
||||
|
||||
print(f"\n正在获取陪练记录列表...")
|
||||
print(f"请求URL: {url}")
|
||||
print(f"请求参数: {params}")
|
||||
|
||||
response = requests.get(url, headers=headers, params=params, verify=False)
|
||||
print(f"响应状态码: {response.status_code}")
|
||||
|
||||
result = response.json()
|
||||
print(f"响应结果: {json.dumps(result, ensure_ascii=False, indent=2)}")
|
||||
|
||||
if response.status_code == 200 and result.get('code') == 200:
|
||||
data = result['data']
|
||||
print(f"\n✓ 获取成功")
|
||||
print(f"总记录数: {data.get('total', 0)}")
|
||||
print(f"当前页记录数: {len(data.get('items', []))}")
|
||||
|
||||
# 打印前5条记录
|
||||
items = data.get('items', [])
|
||||
if items:
|
||||
print(f"\n前{min(5, len(items))}条记录:")
|
||||
for i, item in enumerate(items[:5], 1):
|
||||
print(f"{i}. {item.get('session_id')} - {item.get('scene_name')} - {item.get('start_time')}")
|
||||
else:
|
||||
print("\n⚠️ 记录列表为空!")
|
||||
else:
|
||||
print(f"\n✗ 获取失败")
|
||||
|
||||
def get_practice_stats(token: str):
|
||||
"""获取陪练统计数据"""
|
||||
url = f"https://aiedu.ireborn.com.cn/api/v1/practice/stats"
|
||||
headers = {
|
||||
"Authorization": f"Bearer {token}"
|
||||
}
|
||||
|
||||
print(f"\n正在获取陪练统计数据...")
|
||||
response = requests.get(url, headers=headers, verify=False)
|
||||
print(f"响应状态码: {response.status_code}")
|
||||
|
||||
result = response.json()
|
||||
print(f"响应结果: {json.dumps(result, ensure_ascii=False, indent=2)}")
|
||||
|
||||
def main():
|
||||
print("=" * 60)
|
||||
print("测试陪练记录列表API")
|
||||
print("=" * 60)
|
||||
|
||||
# 测试多个用户
|
||||
test_users = [
|
||||
("admin", "admin123"), # admin
|
||||
("consultant_001", "admin123"), # consultant_001
|
||||
("consultant_002", "admin123"), # consultant_002
|
||||
]
|
||||
|
||||
for username, password in test_users:
|
||||
print(f"\n{'=' * 60}")
|
||||
print(f"测试用户: {username}")
|
||||
print(f"{'=' * 60}")
|
||||
|
||||
# 登录
|
||||
token = login(username, password)
|
||||
if not token:
|
||||
print(f"用户 {username} 登录失败,跳过")
|
||||
continue
|
||||
|
||||
# 获取陪练记录
|
||||
get_practice_sessions(token)
|
||||
|
||||
# 获取统计数据
|
||||
get_practice_stats(token)
|
||||
|
||||
print("\n")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user