#!/usr/bin/env python3 """ 测试新登录逻辑(单枪匹马/组队团战/独当一面) """ import requests API_BASE = 'http://localhost:8000/api/v1' def test_new_login(): print("="*60) print("🎯 测试新登录逻辑") print("="*60) # 1. 单枪匹马 print("\n🥷 测试 1: 单枪匹马(仅人类)") res = requests.post(f'{API_BASE}/auth/login/', json={ 'username': 'test', 'password': 'test123', 'mode': 'solo' }) if res.status_code == 200: data = res.json() print(f"✅ 登录成功") print(f" 模式:{data['mode_name']}") print(f" 会话数:{len(data['sessions'])}") for s in data['sessions']: print(f" - {s['session_type']}: {s['nickname']} ({s['emoji']})") else: print(f"❌ 登录失败:{res.json()}") # 2. 组队团战 print("\n🛡️ 测试 2: 组队团战(人类 +2 龙虾)") res = requests.post(f'{API_BASE}/auth/login/', json={ 'username': 'test', 'password': 'test123', 'mode': 'team', 'agent_ids': ['flying_hero', 'lobster_monitor'] }) if res.status_code == 200: data = res.json() print(f"✅ 登录成功") print(f" 模式:{data['mode_name']}") print(f" 会话数:{len(data['sessions'])}") for s in data['sessions']: emoji = s.get('emoji', '🤖') print(f" - {s['session_type']}: {s['nickname']} ({emoji})") else: print(f"❌ 登录失败:{res.json()}") # 3. 独当一面 print("\n⚔️ 测试 3: 独当一面(仅龙虾)") res = requests.post(f'{API_BASE}/auth/login/', json={ 'username': 'test', 'password': 'test123', 'mode': 'agent_only', 'agent_ids': ['flying_hero'] }) if res.status_code == 200: data = res.json() print(f"✅ 登录成功") print(f" 模式:{data['mode_name']}") print(f" 会话数:{len(data['sessions'])}") for s in data['sessions']: emoji = s.get('emoji', '🤖') print(f" - {s['session_type']}: {s['nickname']} ({emoji})") else: print(f"❌ 登录失败:{res.json()}") # 4. 错误测试 - 组队但没选龙虾 print("\n❌ 测试 4: 组队但没选龙虾(应该失败)") res = requests.post(f'{API_BASE}/auth/login/', json={ 'username': 'test', 'password': 'test123', 'mode': 'team', 'agent_ids': [] }) if res.status_code == 400: print(f"✅ 正确失败:{res.json()['error']}") else: print(f"❌ 应该失败但成功了:{res.json()}") print("\n" + "="*60) print("✅ 新登录逻辑测试完成!") print("="*60) print("\n📊 三种模式:") print("1. 🥷 单枪匹马 - 人类单独出战") print("2. 🛡️ 组队团战 - 人类 +N 龙虾") print("3. ⚔️ 独当一面 - 龙虾单独出征") if __name__ == '__main__': test_new_login()