【悟凡】真正意义上的净土重生:只保留核心逻辑
This commit is contained in:
167
backend/test_api.py
Normal file
167
backend/test_api.py
Normal file
@@ -0,0 +1,167 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
龙虾议事厅 - API 测试脚本
|
||||
自动测试所有核心功能
|
||||
"""
|
||||
|
||||
import requests
|
||||
import json
|
||||
import sys
|
||||
|
||||
API_BASE = 'http://localhost:8000/api/v1'
|
||||
|
||||
def print_result(name, success, data=None):
|
||||
"""打印测试结果"""
|
||||
if success:
|
||||
print(f"✅ {name}")
|
||||
if data:
|
||||
print(f" {json.dumps(data, indent=2, ensure_ascii=False)}")
|
||||
else:
|
||||
print(f"❌ {name}")
|
||||
return success
|
||||
|
||||
def test_register():
|
||||
"""测试注册"""
|
||||
print("\n=== 测试用户注册 ===")
|
||||
try:
|
||||
response = requests.post(f'{API_BASE}/auth/register/', json={
|
||||
'username': 'testuser',
|
||||
'email': 'test@example.com',
|
||||
'password': 'password123'
|
||||
})
|
||||
if response.status_code in [200, 201]:
|
||||
return print_result("用户注册", True, response.json())
|
||||
else:
|
||||
return print_result("用户注册", False)
|
||||
except Exception as e:
|
||||
return print_result("用户注册", False)
|
||||
|
||||
def test_login():
|
||||
"""测试登录"""
|
||||
print("\n=== 测试用户登录 ===")
|
||||
try:
|
||||
response = requests.post(f'{API_BASE}/auth/login/', json={
|
||||
'username': 'test',
|
||||
'password': 'test123'
|
||||
})
|
||||
if response.status_code == 200:
|
||||
data = response.json()
|
||||
print_result("用户登录", True, data)
|
||||
return data.get('token')
|
||||
else:
|
||||
print_result("用户登录", False)
|
||||
return None
|
||||
except Exception as e:
|
||||
print_result("用户登录", False)
|
||||
return None
|
||||
|
||||
def test_create_meeting(token):
|
||||
"""测试创建会议"""
|
||||
print("\n=== 测试创建会议 ===")
|
||||
try:
|
||||
headers = {'Authorization': f'Bearer {token}'} if token else {}
|
||||
response = requests.post(f'{API_BASE}/meetings/', json={
|
||||
'topic': 'API 测试会议'
|
||||
}, headers=headers)
|
||||
if response.status_code in [200, 201]:
|
||||
data = response.json()
|
||||
print_result("创建会议", True, data)
|
||||
return data.get('id')
|
||||
else:
|
||||
print_result("创建会议", False)
|
||||
print(f" 错误:{response.text[:200]}")
|
||||
return None
|
||||
except Exception as e:
|
||||
print_result("创建会议", False)
|
||||
return None
|
||||
|
||||
def test_list_meetings(token):
|
||||
"""测试获取会议列表"""
|
||||
print("\n=== 测试获取会议列表 ===")
|
||||
try:
|
||||
headers = {'Authorization': f'Bearer {token}'} if token else {}
|
||||
response = requests.get(f'{API_BASE}/meetings/', headers=headers)
|
||||
if response.status_code == 200:
|
||||
data = response.json()
|
||||
print_result("获取会议列表", True, data)
|
||||
return data
|
||||
else:
|
||||
print_result("获取会议列表", False)
|
||||
return None
|
||||
except Exception as e:
|
||||
print_result("获取会议列表", False)
|
||||
return None
|
||||
|
||||
def test_send_message(token, meeting_id):
|
||||
"""测试发送消息"""
|
||||
print("\n=== 测试发送消息 ===")
|
||||
try:
|
||||
headers = {'Authorization': f'Bearer {token}'} if token else {}
|
||||
response = requests.post(
|
||||
f'{API_BASE}/meetings/{meeting_id}/send_message/',
|
||||
json={'content': 'Hello, 这是测试消息!'},
|
||||
headers=headers
|
||||
)
|
||||
if response.status_code in [200, 201]:
|
||||
data = response.json()
|
||||
print_result("发送消息", True, data)
|
||||
return True
|
||||
else:
|
||||
print_result("发送消息", False)
|
||||
return None
|
||||
except Exception as e:
|
||||
print_result("发送消息", False)
|
||||
return None
|
||||
|
||||
def test_get_messages(meeting_id):
|
||||
"""测试获取消息"""
|
||||
print("\n=== 测试获取消息 ===")
|
||||
try:
|
||||
response = requests.get(f'{API_BASE}/meetings/{meeting_id}/messages/?last_id=0')
|
||||
if response.status_code == 200:
|
||||
data = response.json()
|
||||
print_result("获取消息", True, data)
|
||||
return True
|
||||
else:
|
||||
print_result("获取消息", False)
|
||||
return None
|
||||
except Exception as e:
|
||||
print_result("获取消息", False)
|
||||
return None
|
||||
|
||||
def main():
|
||||
"""主测试流程"""
|
||||
print("=" * 60)
|
||||
print("🏛️ 龙虾议事厅 - API 自动化测试")
|
||||
print("=" * 60)
|
||||
|
||||
# 1. 测试登录
|
||||
token = test_login()
|
||||
if not token:
|
||||
print("\n⚠️ 登录失败,尝试注册新用户...")
|
||||
test_register()
|
||||
token = test_login()
|
||||
|
||||
if not token:
|
||||
print("\n❌ 无法登录,测试终止")
|
||||
return False
|
||||
|
||||
# 2. 测试创建会议
|
||||
meeting_id = test_create_meeting(token)
|
||||
|
||||
# 3. 测试获取会议列表
|
||||
test_list_meetings(token)
|
||||
|
||||
# 4. 测试发送消息
|
||||
if meeting_id:
|
||||
test_send_message(token, meeting_id)
|
||||
test_get_messages(meeting_id)
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("✅ 测试完成!")
|
||||
print("=" * 60)
|
||||
return True
|
||||
|
||||
if __name__ == '__main__':
|
||||
success = main()
|
||||
sys.exit(0 if success else 1)
|
||||
Reference in New Issue
Block a user