#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 快速API测试脚本 用于快速验证API接口的基本功能 使用方法: python quick_test.py """ import requests import json import sys # API配置 API_BASE_URL = "https://whaletownend.xinghangee.icu" def test_api_endpoint(method, endpoint, data=None, description=""): """测试单个API端点""" url = f"{API_BASE_URL}{endpoint}" print(f"\n🧪 测试: {description}") print(f"📡 {method} {url}") if data: print(f"📦 数据: {json.dumps(data, ensure_ascii=False)}") try: if method == "GET": response = requests.get(url, timeout=10) elif method == "POST": response = requests.post(url, json=data, timeout=10) else: print(f"❌ 不支持的方法: {method}") return False print(f"📊 状态码: {response.status_code}") try: response_data = response.json() print(f"📄 响应: {json.dumps(response_data, ensure_ascii=False, indent=2)}") # 检查特殊状态码 if response.status_code == 206: print("🧪 测试模式响应") if response_data.get("data", {}).get("verification_code"): print(f"🔑 验证码: {response_data['data']['verification_code']}") elif response.status_code == 409: print("⚠️ 资源冲突") elif response.status_code == 429: print("⏰ 频率限制") return 200 <= response.status_code < 300 or response.status_code == 206 except json.JSONDecodeError: print(f"📄 原始响应: {response.text}") return 200 <= response.status_code < 300 except requests.exceptions.Timeout: print("❌ 请求超时") return False except requests.exceptions.ConnectionError: print("❌ 连接失败") return False except Exception as e: print(f"❌ 请求异常: {e}") return False def main(): """主函数""" print("🐋 WhaleTown API 快速测试") print("=" * 50) # 测试用例 tests = [ { "method": "GET", "endpoint": "/", "description": "获取应用状态" }, { "method": "POST", "endpoint": "/auth/send-email-verification", "data": {"email": "test@example.com"}, "description": "发送邮箱验证码" }, { "method": "POST", "endpoint": "/auth/send-email-verification", "data": {"email": "invalid-email"}, "description": "发送验证码(无效邮箱)" }, { "method": "POST", "endpoint": "/auth/login", "data": {"identifier": "testuser", "password": "password123"}, "description": "用户登录" }, { "method": "POST", "endpoint": "/auth/register", "data": { "username": "testuser_quick", "password": "password123", "nickname": "快速测试用户" }, "description": "用户注册(无邮箱)" }, { "method": "POST", "endpoint": "/auth/send-login-verification-code", "data": {"identifier": "test@example.com"}, "description": "发送登录验证码" } ] # 执行测试 success_count = 0 total_count = len(tests) for test in tests: success = test_api_endpoint( method=test["method"], endpoint=test["endpoint"], data=test.get("data"), description=test["description"] ) if success: success_count += 1 print("✅ 测试通过") else: print("❌ 测试失败") print("-" * 30) # 打印总结 print(f"\n📊 测试总结:") print(f"总测试数: {total_count}") print(f"成功: {success_count}") print(f"失败: {total_count - success_count}") print(f"成功率: {(success_count/total_count*100):.1f}%") if success_count == total_count: print("🎉 所有测试通过!") else: print("⚠️ 部分测试失败,请检查API服务") if __name__ == "__main__": main()