Files
hzdyjs/test/学生信息管理错误诊断.py
T
2025-07-16 18:11:31 +08:00

187 lines
5.7 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
学生信息管理错误诊断脚本
快速检查回退后的问题
"""
import requests
import json
from datetime import datetime
# 配置
BASE_URL = "http://localhost:8080"
LOGIN_URL = f"{BASE_URL}/auth/login"
STUDENT_LIST_URL = f"{BASE_URL}/xg-xx/studentInfo/list"
# 测试数据
LOGIN_DATA = {
"clientId": "e5cd7e4891bf95d1d19206ce24a7b32e",
"username": "admin",
"password": "admin123",
"grant_type": "password",
"tenantId": "000000"
}
def test_basic_connection():
"""测试基础连接"""
print("🔍 测试服务器连接...")
try:
response = requests.get(f"{BASE_URL}/health", timeout=5)
print(f"健康检查响应: {response.status_code}")
return True
except Exception as e:
print(f"❌ 连接失败: {e}")
return False
def get_auth_token():
"""获取认证Token"""
print("🔐 获取认证Token...")
try:
response = requests.post(LOGIN_URL, json=LOGIN_DATA, timeout=10)
print(f"登录响应状态: {response.status_code}")
if response.status_code == 200:
result = response.json()
print(f"登录响应: {json.dumps(result, indent=2, ensure_ascii=False)}")
if result.get('code') == 200:
token = result['data']['access_token']
print("✅ Token获取成功")
return token
else:
print(f"❌ 登录失败: {result.get('msg', '未知错误')}")
return None
else:
print(f"❌ 登录请求失败: {response.status_code}")
print(f"响应内容: {response.text}")
return None
except Exception as e:
print(f"❌ 登录异常: {e}")
return None
def test_student_list_basic(token):
"""测试基础学生列表查询"""
print("📋 测试基础学生列表查询...")
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json',
'clientid': 'e5cd7e4891bf95d1d19206ce24a7b32e',
'referer': 'http://localhost',
'tenantId': '000000'
}
params = {
'pageNum': 1,
'pageSize': 10
}
try:
response = requests.get(STUDENT_LIST_URL, params=params, headers=headers, timeout=10)
print(f"响应状态码: {response.status_code}")
if response.status_code == 200:
result = response.json()
print(f"完整响应: {json.dumps(result, indent=2, ensure_ascii=False)}")
if result.get('code') == 200:
data = result.get('data', {})
total = data.get('total', 0)
rows = data.get('rows', [])
print(f"✅ 基础查询成功 - 总数: {total}, 当前页: {len(rows)}")
return True
else:
print(f"❌ 查询失败: {result.get('msg', '未知错误')}")
return False
else:
print(f"❌ 请求失败: {response.status_code}")
print(f"错误响应: {response.text}")
return False
except Exception as e:
print(f"❌ 查询异常: {e}")
return False
def test_student_list_with_filter(token):
"""测试带过滤条件的查询(这是之前报错的场景)"""
print("🔍 测试带过滤条件的查询...")
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json',
'clientid': 'e5cd7e4891bf95d1d19206ce24a7b32e',
'referer': 'http://localhost',
'tenantId': '000000'
}
params = {
'pageNum': 1,
'pageSize': 10,
'gender': '1' # 这是之前导致SQL错误的参数
}
try:
response = requests.get(STUDENT_LIST_URL, params=params, headers=headers, timeout=10)
print(f"响应状态码: {response.status_code}")
if response.status_code == 200:
result = response.json()
print(f"完整响应: {json.dumps(result, indent=2, ensure_ascii=False)}")
if result.get('code') == 200:
data = result.get('data', {})
total = data.get('total', 0)
rows = data.get('rows', [])
print(f"✅ 过滤查询成功 - 总数: {total}, 当前页: {len(rows)}")
return True
else:
print(f"❌ 查询失败: {result.get('msg', '未知错误')}")
return False
else:
print(f"❌ 请求失败: {response.status_code}")
print(f"错误响应: {response.text}")
return False
except Exception as e:
print(f"❌ 查询异常: {e}")
return False
def main():
"""主函数"""
print("="*80)
print("🔍 学生信息管理错误诊断")
print("="*80)
print(f"⏰ 诊断时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
print()
# 1. 测试基础连接
if not test_basic_connection():
print("❌ 服务器连接失败,请检查服务是否启动")
return
print()
# 2. 获取认证Token
token = get_auth_token()
if not token:
print("❌ 无法获取认证Token")
return
print()
# 3. 测试基础查询
if not test_student_list_basic(token):
print("❌ 基础查询失败")
return
print()
# 4. 测试过滤查询
if not test_student_list_with_filter(token):
print("❌ 过滤查询失败 - 可能是SQL重复WHERE问题")
return
print()
print("✅ 所有测试通过!")
if __name__ == "__main__":
main()