#!/usr/bin/env python3 """ 测试服务器访问和功能 """ import requests import json import sys import time def test_endpoint(url, name, expected_status=200): """测试单个端点""" try: start_time = time.time() response = requests.get(url, timeout=10) elapsed = (time.time() - start_time) * 1000 if response.status_code == expected_status: print(f"✅ {name}: {response.status_code} ({elapsed:.1f}ms)") return True else: print(f"❌ {name}: 期望 {expected_status}, 实际 {response.status_code}") return False except requests.exceptions.RequestException as e: print(f"❌ {name}: 请求失败 - {e}") return False except Exception as e: print(f"❌ {name}: 未知错误 - {e}") return False def test_api_response(url, name): """测试API响应格式""" try: response = requests.get(url, timeout=10) if response.status_code == 200: data = response.json() if 'errorCode' in data and data['errorCode'] == 0: print(f"✅ {name}: API格式正确") return True else: print(f"⚠️ {name}: API格式异常") return False else: print(f"❌ {name}: HTTP {response.status_code}") return False except Exception as e: print(f"❌ {name}: 解析失败 - {e}") return False def main(): """主函数""" base_url = "http://localhost:8000" public_url = "http://129.211.173.87:8000" print("🔍 测试玩Android Material Design开发服务器") print("="*50) # 测试本地访问 print("\n📱 测试本地访问:") local_tests = [ (f"{base_url}/", "首页"), (f"{base_url}/material_preview.html", "Material预览"), (f"{base_url}/health", "健康检查"), (f"{base_url}/api/banner/json", "Banner API"), (f"{base_url}/api/hotkey/json", "热词 API"), (f"{base_url}/api/article/list/0/json", "文章 API"), ] local_success = 0 for url, name in local_tests: if test_endpoint(url, name): local_success += 1 # 测试公网访问 print("\n🌐 测试公网访问:") public_tests = [ (f"{public_url}/", "首页"), (f"{public_url}/health", "健康检查"), ] public_success = 0 for url, name in public_tests: if test_endpoint(url, name): public_success += 1 # 测试API格式 print("\n🔧 测试API格式:") api_tests = [ (f"{base_url}/api/banner/json", "Banner API"), (f"{base_url}/api/hotkey/json", "热词 API"), (f"{base_url}/api/article/list/0/json", "文章 API"), ] api_success = 0 for url, name in api_tests: if test_api_response(url, name): api_success += 1 # 汇总结果 print("\n" + "="*50) print("📊 测试结果汇总:") print(f" 本地访问: {local_success}/{len(local_tests)} 通过") print(f" 公网访问: {public_success}/{len(public_tests)} 通过") print(f" API格式: {api_success}/{len(api_tests)} 通过") total_tests = len(local_tests) + len(public_tests) + len(api_tests) total_success = local_success + public_success + api_success print(f"\n🎯 总体结果: {total_success}/{total_tests} 项测试通过") if total_success == total_tests: print("\n✨ 所有测试通过!服务器运行正常。") # 显示访问信息 print("\n🚀 访问信息:") print(f" 本地首页: {base_url}/") print(f" 公网首页: {public_url}/") print(f" Material预览: {base_url}/material_preview.html") print(f" API文档: {base_url}/api/banner/json") # 生成测试报告 create_test_report(base_url, public_url) return True else: print("\n⚠️ 部分测试失败,请检查服务器状态。") return False def create_test_report(base_url, public_url): """创建测试报告""" report = f"""
玩Android Material Design开发服务器