98 lines
4.2 KiB
Python
98 lines
4.2 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
测试所有模型管理修复
|
||
"""
|
||
import urllib.request
|
||
import json
|
||
|
||
def test_complete_fixes():
|
||
try:
|
||
print("=== 综合测试模型管理修复 ===")
|
||
|
||
# 1. 测试基本模型列表
|
||
print("\n1. 测试基本模型列表:")
|
||
url = 'http://localhost:5000/api/models'
|
||
with urllib.request.urlopen(url) as response:
|
||
data = response.read().decode('utf-8')
|
||
result = json.loads(data)
|
||
|
||
print(f"状态码: {response.status}")
|
||
models = result.get('data', [])
|
||
pagination = result.get('pagination', {})
|
||
|
||
print(f"模型数量: {len(models)}")
|
||
print(f"总数: {pagination.get('total', 0)}")
|
||
|
||
# 检查每个模型的关键字段
|
||
for i, model in enumerate(models):
|
||
print(f"\n模型 {i+1}:")
|
||
model_id = model.get('model_id', '')
|
||
filename = model.get('filename', '')
|
||
metrics = model.get('metrics', {})
|
||
|
||
print(f" model_id: '{model_id}' {'✓' if model_id else '✗'}")
|
||
print(f" filename: '{filename}' {'✓' if filename else '✗'}")
|
||
print(f" product_id: '{model.get('product_id', '')}' ✓")
|
||
print(f" model_type: '{model.get('model_type', '')}' ✓")
|
||
print(f" metrics: {len(metrics)} 个指标 {'✓' if metrics else '✗'}")
|
||
|
||
if metrics:
|
||
print(f" - R2: {metrics.get('R2', 'N/A')}")
|
||
print(f" - RMSE: {metrics.get('RMSE', 'N/A')}")
|
||
print(f" - MAE: {metrics.get('MAE', 'N/A')}")
|
||
|
||
# 模型能否删除(基于model_id)
|
||
if model_id:
|
||
print(f" 删除URL: /api/models/{model_id} ✓")
|
||
else:
|
||
print(f" 删除URL: 无法构造 ✗")
|
||
|
||
# 2. 测试分页功能
|
||
print("\n\n2. 测试分页功能:")
|
||
url = 'http://localhost:5000/api/models?page=1&page_size=2'
|
||
with urllib.request.urlopen(url) as response:
|
||
data = response.read().decode('utf-8')
|
||
result = json.loads(data)
|
||
|
||
models = result.get('data', [])
|
||
pagination = result.get('pagination', {})
|
||
|
||
print(f"请求第1页,每页2条")
|
||
print(f"返回数量: {len(models)}")
|
||
print(f"分页信息:")
|
||
print(f" 当前页: {pagination.get('page', 0)}")
|
||
print(f" 每页大小: {pagination.get('page_size', 0)}")
|
||
print(f" 总数: {pagination.get('total', 0)}")
|
||
print(f" 总页数: {pagination.get('total_pages', 0)}")
|
||
print(f" 有下一页: {pagination.get('has_next', False)}")
|
||
|
||
# 3. 测试单个模型删除URL(不实际删除)
|
||
if models and models[0].get('model_id'):
|
||
model_id = models[0]['model_id']
|
||
print(f"\n3. 测试删除端点(不实际删除):")
|
||
print(f"模型ID: {model_id}")
|
||
print(f"删除URL: DELETE /api/models/{model_id}")
|
||
print("前端应该能正确构造此URL")
|
||
|
||
# 4. 总结
|
||
print(f"\n\n=== 修复状态总结 ===")
|
||
total_models = pagination.get('total', 0)
|
||
working_models = sum(1 for m in models if m.get('model_id') and m.get('filename'))
|
||
models_with_metrics = sum(1 for m in models if m.get('metrics'))
|
||
|
||
print(f"✓ 分页功能: 已实现")
|
||
print(f"✓ 总模型数: {total_models}")
|
||
print(f"✓ 可用模型: {working_models}/{len(models)} (有model_id)")
|
||
print(f"✓ 有指标模型: {models_with_metrics}/{len(models)}")
|
||
print(f"✓ 删除功能: {'可用' if working_models > 0 else '不可用'}")
|
||
|
||
if working_models == len(models) and models_with_metrics > 0:
|
||
print("\n🎉 所有功能修复成功!")
|
||
else:
|
||
print(f"\n⚠️ 仍需要重启API服务器以应用所有修复")
|
||
|
||
except Exception as e:
|
||
print(f"测试失败: {e}")
|
||
|
||
if __name__ == "__main__":
|
||
test_complete_fixes() |