Files
012-kaopeilian/tests/test_integration.py
111 998211c483 feat: 初始化考培练系统项目
- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
2026-01-24 19:33:28 +08:00

135 lines
4.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
"""
前后端集成测试脚本
"""
import requests
import json
import time
def test_backend_api():
"""测试后端API"""
base_url = "http://localhost:8000"
print("🧪 测试后端API...")
# 1. 健康检查
try:
response = requests.get(f"{base_url}/health")
print(f"✅ 健康检查: {response.json()}")
except Exception as e:
print(f"❌ 健康检查失败: {e}")
return False
# 2. 登录测试
login_data = {"username": "testuser", "password": "123456"}
try:
response = requests.post(f"{base_url}/api/v1/auth/login", json=login_data)
if response.status_code == 200:
data = response.json()
print(f"✅ 登录成功: {data['message']}")
print(f" 用户ID: {data['data']['user']['id']}")
print(f" 用户名: {data['data']['user']['username']}")
print(f" 角色: {data['data']['user']['role']}")
# 保存token用于后续测试
global access_token, refresh_token
access_token = data['data']['token']['access_token']
refresh_token = data['data']['token']['refresh_token']
return True
else:
print(f"❌ 登录失败: {response.text}")
return False
except Exception as e:
print(f"❌ 登录请求失败: {e}")
return False
def test_frontend_proxy():
"""测试前端代理配置"""
base_url = "http://localhost:3001"
print("\n🌐 测试前端代理...")
# 1. 检查前端是否可访问
try:
response = requests.get(base_url)
if response.status_code == 200:
print("✅ 前端页面可访问")
else:
print(f"❌ 前端页面访问失败: {response.status_code}")
return False
except Exception as e:
print(f"❌ 前端页面访问失败: {e}")
return False
# 2. 测试前端代理到后端的API调用
try:
# 通过前端代理调用后端API
headers = {"Content-Type": "application/json"}
response = requests.post(f"{base_url}/api/v1/auth/login", json={"username": "testuser", "password": "123456"}, headers=headers)
if response.status_code == 200:
data = response.json()
print("✅ 前端代理API调用成功")
print(f" 响应数据: {data}")
return True
else:
print(f"❌ 前端代理API调用失败: {response.status_code}")
print(f" 响应: {response.text}")
return False
except Exception as e:
print(f"❌ 前端代理API调用失败: {e}")
return False
def test_token_refresh():
"""测试token刷新"""
global access_token, refresh_token
if not access_token or not refresh_token:
print("❌ 没有可用的token进行刷新测试")
return False
print("\n🔄 测试token刷新...")
try:
refresh_data = {"refresh_token": refresh_token}
response = requests.post("http://localhost:8000/api/v1/auth/refresh", json=refresh_data)
if response.status_code == 200:
data = response.json()
print("✅ Token刷新成功")
print(f" 新token: {data['data']['access_token'][:50]}...")
return True
else:
print(f"❌ Token刷新失败: {response.text}")
return False
except Exception as e:
print(f"❌ Token刷新请求失败: {e}")
return False
def main():
"""主测试函数"""
print("🚀 开始前后端集成测试")
print("=" * 50)
# 测试后端API
if not test_backend_api():
print("❌ 后端API测试失败终止测试")
return False
# 测试前端代理
if not test_frontend_proxy():
print("❌ 前端代理测试失败")
return False
# 测试token刷新
if not test_token_refresh():
print("❌ Token刷新测试失败")
return False
print("\n" + "=" * 50)
print("🎉 所有测试通过!前后端集成成功!")
return True
if __name__ == "__main__":
main()