- 从服务器拉取完整代码 - 按框架规范整理项目结构 - 配置 Drone CI 测试环境部署 - 包含后端(FastAPI)、前端(Vue3)、管理端 技术栈: Vue3 + TypeScript + FastAPI + MySQL
114 lines
4.2 KiB
Python
114 lines
4.2 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
手动测试登录功能的脚本
|
||
"""
|
||
|
||
import requests
|
||
import json
|
||
from datetime import datetime
|
||
|
||
def test_login_page():
|
||
"""测试登录页面是否可访问"""
|
||
print("=" * 50)
|
||
print("登录功能测试报告")
|
||
print("=" * 50)
|
||
print(f"测试时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
||
print()
|
||
|
||
# 测试前端页面访问
|
||
frontend_url = "http://localhost:3001/login?redirect=/trainee/exam"
|
||
print(f"1. 测试前端页面访问: {frontend_url}")
|
||
|
||
try:
|
||
response = requests.get(frontend_url, timeout=5)
|
||
print(f" 状态码: {response.status_code}")
|
||
print(f" 响应头: {dict(response.headers)}")
|
||
|
||
if response.status_code == 200:
|
||
print(" ✅ 前端页面可以正常访问")
|
||
content_length = len(response.text)
|
||
print(f" 页面内容长度: {content_length} 字符")
|
||
|
||
# 检查是否包含登录相关元素
|
||
content = response.text.lower()
|
||
login_indicators = ['login', '登录', 'username', 'password', 'form']
|
||
found_indicators = [indicator for indicator in login_indicators if indicator in content]
|
||
|
||
if found_indicators:
|
||
print(f" 找到登录相关元素: {found_indicators}")
|
||
else:
|
||
print(" ⚠️ 未找到明显的登录相关元素")
|
||
else:
|
||
print(f" ❌ 前端页面访问失败,状态码: {response.status_code}")
|
||
|
||
except requests.exceptions.ConnectionError:
|
||
print(" ❌ 无法连接到前端服务 (localhost:3001)")
|
||
except requests.exceptions.Timeout:
|
||
print(" ❌ 前端服务响应超时")
|
||
except Exception as e:
|
||
print(f" ❌ 访问前端页面时出错: {e}")
|
||
|
||
print()
|
||
|
||
# 测试后端API
|
||
backend_base = "http://localhost:8000"
|
||
print(f"2. 测试后端API服务: {backend_base}")
|
||
|
||
try:
|
||
# 测试后端健康检查
|
||
health_url = f"{backend_base}/health"
|
||
response = requests.get(health_url, timeout=5)
|
||
print(f" 健康检查状态码: {response.status_code}")
|
||
|
||
# 测试登录API端点
|
||
login_api_url = f"{backend_base}/api/v1/auth/login"
|
||
response = requests.options(login_api_url, timeout=5)
|
||
print(f" 登录API OPTIONS请求状态码: {response.status_code}")
|
||
|
||
if response.status_code in [200, 405]: # 405表示方法不允许但端点存在
|
||
print(" ✅ 后端API服务正常运行")
|
||
else:
|
||
print(f" ⚠️ 后端API可能有问题,状态码: {response.status_code}")
|
||
|
||
except requests.exceptions.ConnectionError:
|
||
print(" ❌ 无法连接到后端服务 (localhost:8000)")
|
||
except requests.exceptions.Timeout:
|
||
print(" ❌ 后端服务响应超时")
|
||
except Exception as e:
|
||
print(f" ❌ 访问后端API时出错: {e}")
|
||
|
||
print()
|
||
|
||
# 测试数据库连接(通过后端API)
|
||
print("3. 测试数据库连接状态")
|
||
try:
|
||
db_status_url = f"{backend_base}/api/v1/system/status"
|
||
response = requests.get(db_status_url, timeout=5)
|
||
|
||
if response.status_code == 200:
|
||
try:
|
||
data = response.json()
|
||
print(" ✅ 系统状态API响应正常")
|
||
print(f" 响应数据: {json.dumps(data, indent=2, ensure_ascii=False)}")
|
||
except json.JSONDecodeError:
|
||
print(" ⚠️ 系统状态API响应不是有效JSON")
|
||
else:
|
||
print(f" ⚠️ 系统状态API状态码: {response.status_code}")
|
||
|
||
except requests.exceptions.ConnectionError:
|
||
print(" ❌ 无法获取系统状态")
|
||
except Exception as e:
|
||
print(f" ❌ 获取系统状态时出错: {e}")
|
||
|
||
print()
|
||
print("=" * 50)
|
||
print("测试建议:")
|
||
print("1. 确保前后端服务都在运行")
|
||
print("2. 检查端口配置是否正确")
|
||
print("3. 验证数据库连接是否正常")
|
||
print("4. 使用浏览器手动访问登录页面进行测试")
|
||
print("=" * 50)
|
||
|
||
if __name__ == "__main__":
|
||
test_login_page()
|