Files
012-kaopeilian/backend/test_team_api.py
111 998211c483 feat: 初始化考培练系统项目
- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
2026-01-24 19:33:28 +08:00

115 lines
3.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
测试团队管理API
"""
import asyncio
import sys
from pathlib import Path
# 添加项目路径
sys.path.append(str(Path(__file__).resolve().parent))
import httpx
async def test_team_api():
"""测试团队管理API"""
base_url = "http://localhost:8000"
print("=" * 60)
print("测试团队管理API")
print("=" * 60)
# 1. 登录获取token
print("\n【1. 登录admin用户】")
login_data = {
"username": "admin",
"password": "admin123"
}
async with httpx.AsyncClient() as client:
try:
response = await client.post(
f"{base_url}/api/v1/auth/login",
json=login_data,
timeout=10.0
)
print(f"登录状态: {response.status_code}")
result = response.json()
print(f"响应内容: {result}")
if response.status_code == 200:
# 尝试不同的数据结构
token = None
if "access_token" in result:
token = result["access_token"]
elif result.get("data"):
if "access_token" in result["data"]:
token = result["data"]["access_token"]
elif "token" in result["data"] and "access_token" in result["data"]["token"]:
token = result["data"]["token"]["access_token"]
if token:
print(f"登录成功获取token: {token[:30]}...")
else:
print(f"无法获取token响应结构: {list(result.keys())}")
return
else:
print(f"登录失败: HTTP {response.status_code}")
return
except Exception as e:
print(f"登录失败: {e}")
return
# 2. 测试团队统计API
print("\n【2. 获取团队统计】")
headers = {"Authorization": f"Bearer {token}"}
try:
response = await client.get(
f"{base_url}/api/v1/team/management/statistics",
headers=headers,
timeout=10.0
)
print(f"状态: {response.status_code}")
result = response.json()
print(f"结果: {result}")
except Exception as e:
print(f"获取统计失败: {e}")
# 3. 测试团队成员列表API
print("\n【3. 获取团队成员列表】")
try:
response = await client.get(
f"{base_url}/api/v1/team/management/members",
headers=headers,
params={"page": 1, "size": 20},
timeout=10.0
)
print(f"状态: {response.status_code}")
result = response.json()
print(f"返回code: {result.get('code')}")
print(f"返回message: {result.get('message')}")
if result.get("data"):
data = result["data"]
print(f"总记录数: {data.get('total')}")
print(f"当前页: {data.get('page')}")
print(f"每页大小: {data.get('page_size')}")
print(f"总页数: {data.get('pages')}")
print(f"返回记录数: {len(data.get('items', []))}")
if data.get('items'):
print("\n前3个成员:")
for member in data['items'][:3]:
print(f" - ID:{member['id']}, 姓名:{member['name']}, 岗位:{member['position']}, 状态:{member['status']}")
else:
print("无数据返回")
except Exception as e:
print(f"获取成员列表失败: {e}")
print("\n" + "=" * 60)
if __name__ == "__main__":
asyncio.run(test_team_api())