#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 简化版API接口测试脚本 快速验证API接口的基本连通性和功能 """ import requests import json import time from datetime import datetime class SimpleAPITester: def __init__(self, base_url="https://whaletownend.xinghangee.icu"): self.base_url = base_url.rstrip('/') self.session = requests.Session() self.session.headers.update({ 'Content-Type': 'application/json', 'User-Agent': 'whaleTown-Simple-Tester/1.0' }) def log(self, message): timestamp = datetime.now().strftime("%H:%M:%S") print(f"[{timestamp}] {message}") def test_endpoint(self, method, endpoint, data=None, description=""): """测试单个端点""" url = f"{self.base_url}{endpoint}" try: if method.upper() == 'GET': response = self.session.get(url, timeout=10) elif method.upper() == 'POST': response = self.session.post(url, json=data, timeout=10) self.log(f"✅ {description}") self.log(f" 状态码: {response.status_code}") try: result = response.json() self.log(f" 响应: {json.dumps(result, ensure_ascii=False, indent=2)[:200]}...") return result except: self.log(f" 响应: {response.text[:100]}...") return {"status_code": response.status_code, "text": response.text} except Exception as e: self.log(f"❌ {description} - 错误: {str(e)}") return None def run_basic_tests(self): """运行基础测试""" self.log("🚀 开始基础API测试...") self.log(f"测试目标: {self.base_url}") # 1. 测试应用状态 self.test_endpoint('GET', '/', description="应用状态检查") # 2. 测试发送验证码 result = self.test_endpoint('POST', '/auth/send-email-verification', {'email': 'test@example.com'}, "发送邮箱验证码") # 3. 如果获取到验证码,测试注册 if result and 'data' in result and 'verification_code' in result['data']: verification_code = result['data']['verification_code'] self.log(f"📧 获取到验证码: {verification_code}") # 测试用户注册(需要验证码) username = f"testuser_{int(time.time())}" self.test_endpoint('POST', '/auth/register', { 'username': username, 'password': 'Test123456', 'nickname': '测试用户', 'email': 'test@example.com', 'email_verification_code': verification_code # 添加验证码 }, "用户注册") # 测试用户登录 self.test_endpoint('POST', '/auth/login', { 'identifier': username, 'password': 'Test123456' }, "用户登录") # 4. 测试错误情况 self.test_endpoint('POST', '/auth/login', { 'identifier': 'nonexistent', 'password': 'wrongpassword' }, "无效登录测试") # 5. 测试管理员登录(可能失败) self.test_endpoint('POST', '/admin/auth/login', { 'identifier': 'admin', 'password': 'Admin123456' }, "管理员登录测试") self.log("🎯 基础测试完成!") if __name__ == '__main__': import sys base_url = sys.argv[1] if len(sys.argv) > 1 else "https://whaletownend.xinghangee.icu" tester = SimpleAPITester(base_url) tester.run_basic_tests()