#!/usr/bin/env python3 """ 日记系统前端功能自动化测试 每次修改前端后必须运行此测试 """ import requests import sys BASE_URL = 'http://127.0.0.1:8001' API_BASE = f'{BASE_URL}/api' def test_api_endpoints(): """测试 API 接口""" print("📡 测试 API 接口...") tests = [ ('日记统计', f'{API_BASE}/entries/stats/', 200), ('日记列表', f'{API_BASE}/entries/', 200), ('今日日记', f'{API_BASE}/entries/today/', 200), ('最近日记', f'{API_BASE}/entries/recent/', 200), ('经验总结', f'{API_BASE}/experiences/recent/', 200), ] passed = 0 failed = 0 for name, url, expected_status in tests: try: resp = requests.get(url, timeout=5) if resp.status_code == expected_status: print(f" ✅ {name}: {resp.status_code}") passed += 1 else: print(f" ❌ {name}: 期望 {expected_status}, 实际 {resp.status_code}") failed += 1 except Exception as e: print(f" ❌ {name}: {str(e)}") failed += 1 return passed, failed def test_frontend_page(): """测试前端页面""" print("\n🌐 测试前端页面...") try: resp = requests.get(BASE_URL, timeout=5) if resp.status_code == 200: content = resp.text # 检查关键功能是否存在 checks = [ ('日历组件', 'calendar'), ('统计面板', 'stat-'), ('Tab 切换', 'tab-'), ('日记列表', 'diary'), ('经验总结', 'experience'), ('选择日期函数', 'selectDate'), ('渲染日历函数', 'renderCalendar'), ] passed = 0 failed = 0 for name, keyword in checks: if keyword in content: print(f" ✅ {name}: 存在") passed += 1 else: print(f" ❌ {name}: 缺失 (关键词:{keyword})") failed += 1 return passed, failed else: print(f" ❌ 页面访问失败:{resp.status_code}") return 0, 1 except Exception as e: print(f" ❌ 页面访问错误:{str(e)}") return 0, 1 def main(): print("=" * 60) print("🧪 日记系统前端功能测试") print("=" * 60) api_passed, api_failed = test_api_endpoints() page_passed, page_failed = test_frontend_page() total_passed = api_passed + page_passed total_failed = api_failed + page_failed print("\n" + "=" * 60) print(f"📊 测试结果:{total_passed} 通过,{total_failed} 失败") print("=" * 60) if total_failed > 0: print("\n⚠️ 有功能测试失败,请检查后再部署!") sys.exit(1) else: print("\n✅ 所有测试通过,可以部署!") sys.exit(0) if __name__ == '__main__': main()