xianyu-auto-reply/test_improvements.py
2025-07-25 17:24:29 +08:00

258 lines
8.9 KiB
Python
Raw 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 time
from loguru import logger
BASE_URL = "http://localhost:8080"
def test_admin_login():
"""测试管理员登录"""
logger.info("测试管理员登录...")
response = requests.post(f"{BASE_URL}/login",
json={'username': 'admin', 'password': 'admin123'})
if response.json()['success']:
token = response.json()['token']
user_id = response.json()['user_id']
logger.info(f"管理员登录成功token: {token[:20]}...")
return {
'token': token,
'user_id': user_id,
'headers': {'Authorization': f'Bearer {token}'}
}
else:
logger.error("管理员登录失败")
return None
def test_page_access():
"""测试页面访问"""
logger.info("测试页面访问...")
pages = [
("用户管理", "/user_management.html"),
("日志管理", "/log_management.html"),
("数据管理", "/data_management.html")
]
results = []
for page_name, page_url in pages:
try:
response = requests.get(f"{BASE_URL}{page_url}", timeout=5)
if response.status_code == 200:
logger.info(f"{page_name} 页面访问成功 (200)")
results.append((page_name, True))
else:
logger.error(f"{page_name} 页面访问失败 ({response.status_code})")
results.append((page_name, False))
except Exception as e:
logger.error(f"{page_name} 页面访问异常: {e}")
results.append((page_name, False))
return results
def test_data_management_api(admin):
"""测试数据管理API"""
logger.info("测试数据管理API...")
# 测试获取表数据
tables_to_test = ['users', 'cookies', 'cards']
for table in tables_to_test:
try:
response = requests.get(f"{BASE_URL}/admin/data/{table}",
headers=admin['headers'])
if response.status_code == 200:
data = response.json()
if data['success']:
logger.info(f"✅ 获取 {table} 表数据成功,共 {data['count']} 条记录")
else:
logger.error(f"❌ 获取 {table} 表数据失败: {data.get('message', '未知错误')}")
return False
else:
logger.error(f"❌ 获取 {table} 表数据失败: {response.status_code}")
return False
except Exception as e:
logger.error(f"❌ 获取 {table} 表数据异常: {e}")
return False
return True
def test_log_management_api(admin):
"""测试日志管理API"""
logger.info("测试日志管理API...")
try:
# 测试获取日志
response = requests.get(f"{BASE_URL}/admin/logs?lines=10",
headers=admin['headers'])
if response.status_code == 200:
data = response.json()
logs = data.get('logs', [])
logger.info(f"✅ 获取系统日志成功,共 {len(logs)}")
# 测试日志级别过滤
response = requests.get(f"{BASE_URL}/admin/logs?lines=5&level=info",
headers=admin['headers'])
if response.status_code == 200:
data = response.json()
info_logs = data.get('logs', [])
logger.info(f"✅ INFO级别日志过滤成功{len(info_logs)}")
return True
else:
logger.error(f"❌ 日志级别过滤失败: {response.status_code}")
return False
else:
logger.error(f"❌ 获取系统日志失败: {response.status_code}")
return False
except Exception as e:
logger.error(f"❌ 日志管理API测试异常: {e}")
return False
def test_database_backup_api(admin):
"""测试数据库备份API"""
logger.info("测试数据库备份API...")
try:
# 测试数据库下载
response = requests.get(f"{BASE_URL}/admin/backup/download",
headers=admin['headers'])
if response.status_code == 200:
logger.info(f"✅ 数据库备份下载成功,文件大小: {len(response.content)} bytes")
# 测试备份文件列表
response = requests.get(f"{BASE_URL}/admin/backup/list",
headers=admin['headers'])
if response.status_code == 200:
data = response.json()
backups = data.get('backups', [])
logger.info(f"✅ 获取备份文件列表成功,共 {len(backups)} 个备份")
return True
else:
logger.error(f"❌ 获取备份文件列表失败: {response.status_code}")
return False
else:
logger.error(f"❌ 数据库备份下载失败: {response.status_code}")
return False
except Exception as e:
logger.error(f"❌ 数据库备份API测试异常: {e}")
return False
def main():
"""主测试函数"""
print("🚀 系统改进功能测试")
print("=" * 60)
print("📋 测试内容:")
print("• 页面访问测试")
print("• 日志管理功能")
print("• 数据管理功能")
print("• 数据库备份功能")
try:
# 管理员登录
admin = test_admin_login()
if not admin:
print("❌ 测试失败:管理员登录失败")
return False
print("✅ 管理员登录成功")
# 测试页面访问
print(f"\n🧪 测试页面访问...")
page_results = test_page_access()
page_success = all(result[1] for result in page_results)
for page_name, success in page_results:
status = "✅ 通过" if success else "❌ 失败"
print(f" {page_name}: {status}")
# 测试API功能
tests = [
("数据管理API", lambda: test_data_management_api(admin)),
("日志管理API", lambda: test_log_management_api(admin)),
("数据库备份API", lambda: test_database_backup_api(admin)),
]
api_results = []
for test_name, test_func in tests:
print(f"\n🧪 测试 {test_name}...")
try:
result = test_func()
api_results.append((test_name, result))
if result:
print(f"{test_name} 测试通过")
else:
print(f"{test_name} 测试失败")
except Exception as e:
print(f"💥 {test_name} 测试异常: {e}")
api_results.append((test_name, False))
print("\n" + "=" * 60)
print("🎉 系统改进功能测试完成!")
print("\n📊 测试结果:")
# 页面访问结果
print("页面访问:")
for page_name, success in page_results:
status = "✅ 通过" if success else "❌ 失败"
print(f" {page_name}: {status}")
# API功能结果
print("API功能:")
for test_name, success in api_results:
status = "✅ 通过" if success else "❌ 失败"
print(f" {test_name}: {status}")
# 总体结果
all_results = page_results + api_results
passed = sum(1 for _, success in all_results if success)
total = len(all_results)
print(f"\n📈 总体结果: {passed}/{total} 项测试通过")
if passed == total:
print("🎊 所有测试都通过了!系统改进功能正常工作。")
print("\n💡 功能说明:")
print("1. 日志管理:最新日志显示在最上面")
print("2. 系统设置:只保留数据库备份模式")
print("3. 数据管理:新增管理员专用的数据表管理功能")
print("4. 所有管理员功能都有严格的权限控制")
print("\n🎯 使用方法:")
print("• 使用admin账号登录系统")
print("• 在侧边栏可以看到管理员功能菜单")
print("• 点击相应功能进入管理页面")
print("• 数据管理可以查看和删除表中的数据")
return True
else:
print("⚠️ 部分测试失败,请检查相关功能。")
return False
except Exception as e:
print(f"💥 测试异常: {e}")
import traceback
traceback.print_exc()
return False
if __name__ == "__main__":
main()