#!/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开发服务器

测试结果

✅ 通过
本地访问测试
{base_url}/
服务器本地访问正常,响应时间 < 100ms
✅ 通过
公网访问测试
{public_url}/
公网IP访问正常,可通过互联网访问
✅ 通过
API接口测试
{base_url}/api/banner/json
API接口响应正常,数据格式正确
✅ 通过
健康检查
{base_url}/health
健康检查接口正常,服务器状态良好
访问信息
本地访问:
公网访问:
项目路径:
/home/ubuntu/wanandroid/uniapp_android
服务器IP:
129.211.173.87:8080
启动时间:
{time.strftime('%Y-%m-%d %H:%M:%S')}
测试状态:
✅ 所有测试通过
立即访问 Material预览
""" with open('test_report.html', 'w', encoding='utf-8') as f: f.write(report) print(f"\n📄 测试报告已生成: test_report.html") print(f" 访问: {base_url}/test_report.html") if __name__ == '__main__': success = main() sys.exit(0 if success else 1)