完成部分服务器数据向MongoDB数据库迁移
This commit is contained in:
178
Server/test_mongodb_migration.py
Normal file
178
Server/test_mongodb_migration.py
Normal file
@@ -0,0 +1,178 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
测试MongoDB迁移功能
|
||||
作者: AI Assistant
|
||||
功能: 测试每日签到配置从JSON迁移到MongoDB的功能
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
import json
|
||||
|
||||
# 添加当前目录到Python路径
|
||||
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
from SMYMongoDBAPI import SMYMongoDBAPI
|
||||
|
||||
def test_mongodb_migration():
|
||||
"""测试MongoDB迁移功能"""
|
||||
print("=== 测试MongoDB迁移功能 ===")
|
||||
|
||||
# 1. 测试MongoDB API连接
|
||||
print("\n1. 测试MongoDB API连接:")
|
||||
try:
|
||||
api = SMYMongoDBAPI("test")
|
||||
if api.is_connected():
|
||||
print("✓ MongoDB连接成功")
|
||||
else:
|
||||
print("✗ MongoDB连接失败")
|
||||
return False
|
||||
except Exception as e:
|
||||
print(f"✗ MongoDB连接异常: {e}")
|
||||
return False
|
||||
|
||||
# 2. 测试获取每日签到配置
|
||||
print("\n2. 测试获取每日签到配置:")
|
||||
try:
|
||||
config = api.get_daily_checkin_config()
|
||||
if config:
|
||||
print("✓ 成功获取每日签到配置")
|
||||
print(f" 基础奖励金币范围: {config.get('基础奖励', {}).get('金币', {})}")
|
||||
print(f" 种子奖励类型数量: {len(config.get('种子奖励', {}))}")
|
||||
print(f" 连续签到奖励天数: {len(config.get('连续签到奖励', {}))}")
|
||||
else:
|
||||
print("✗ 获取每日签到配置失败")
|
||||
return False
|
||||
except Exception as e:
|
||||
print(f"✗ 获取每日签到配置异常: {e}")
|
||||
return False
|
||||
|
||||
# 3. 测试更新配置
|
||||
print("\n3. 测试更新每日签到配置:")
|
||||
try:
|
||||
# 创建一个测试配置
|
||||
test_config = {
|
||||
"基础奖励": {
|
||||
"金币": {"最小值": 300, "最大值": 600, "图标": "💰", "颜色": "#FFD700"},
|
||||
"经验": {"最小值": 75, "最大值": 150, "图标": "⭐", "颜色": "#00BFFF"}
|
||||
},
|
||||
"种子奖励": {
|
||||
"普通": {"概率": 0.6, "数量范围": [2, 5], "种子池": ["小麦", "胡萝卜", "土豆", "稻谷"]},
|
||||
"优良": {"概率": 0.25, "数量范围": [2, 4], "种子池": ["玉米", "番茄", "洋葱", "大豆", "豌豆", "黄瓜", "大白菜"]},
|
||||
"稀有": {"概率": 0.12, "数量范围": [1, 3], "种子池": ["草莓", "花椰菜", "柿子", "蓝莓", "树莓"]},
|
||||
"史诗": {"概率": 0.025, "数量范围": [1, 2], "种子池": ["葡萄", "南瓜", "芦笋", "茄子", "向日葵", "蕨菜"]},
|
||||
"传奇": {"概率": 0.005, "数量范围": [1, 1], "种子池": ["西瓜", "甘蔗", "香草", "甜菜", "人参", "富贵竹", "芦荟", "哈密瓜"]}
|
||||
},
|
||||
"连续签到奖励": {
|
||||
"第3天": {"额外金币": 150, "额外经验": 75, "描述": "连续签到奖励"},
|
||||
"第7天": {"额外金币": 300, "额外经验": 150, "描述": "一周连击奖励"},
|
||||
"第14天": {"额外金币": 600, "额外经验": 250, "描述": "半月连击奖励"},
|
||||
"第21天": {"额外金币": 1000, "额外经验": 400, "描述": "三周连击奖励"},
|
||||
"第30天": {"额外金币": 2000, "额外经验": 600, "描述": "满月连击奖励"}
|
||||
}
|
||||
}
|
||||
|
||||
success = api.update_daily_checkin_config(test_config)
|
||||
if success:
|
||||
print("✓ 成功更新测试配置到MongoDB")
|
||||
else:
|
||||
print("✗ 更新测试配置失败")
|
||||
return False
|
||||
except Exception as e:
|
||||
print(f"✗ 更新测试配置异常: {e}")
|
||||
return False
|
||||
|
||||
# 4. 验证更新后的配置
|
||||
print("\n4. 验证更新后的配置:")
|
||||
try:
|
||||
updated_config = api.get_daily_checkin_config()
|
||||
if updated_config:
|
||||
print("✓ 成功获取更新后的配置")
|
||||
print(f" 更新后金币范围: {updated_config.get('基础奖励', {}).get('金币', {})}")
|
||||
print(f" 更新后第3天奖励: {updated_config.get('连续签到奖励', {}).get('第3天', {})}")
|
||||
|
||||
# 验证更新是否生效
|
||||
if updated_config.get('基础奖励', {}).get('金币', {}).get('最小值') == 300:
|
||||
print("✓ 配置更新验证成功")
|
||||
else:
|
||||
print("✗ 配置更新验证失败")
|
||||
return False
|
||||
else:
|
||||
print("✗ 获取更新后的配置失败")
|
||||
return False
|
||||
except Exception as e:
|
||||
print(f"✗ 验证更新后配置异常: {e}")
|
||||
return False
|
||||
|
||||
# 5. 恢复原始配置
|
||||
print("\n5. 恢复原始配置:")
|
||||
try:
|
||||
original_config = {
|
||||
"基础奖励": {
|
||||
"金币": {"最小值": 200, "最大值": 500, "图标": "💰", "颜色": "#FFD700"},
|
||||
"经验": {"最小值": 50, "最大值": 120, "图标": "⭐", "颜色": "#00BFFF"}
|
||||
},
|
||||
"种子奖励": {
|
||||
"普通": {"概率": 0.6, "数量范围": [2, 5], "种子池": ["小麦", "胡萝卜", "土豆", "稻谷"]},
|
||||
"优良": {"概率": 0.25, "数量范围": [2, 4], "种子池": ["玉米", "番茄", "洋葱", "大豆", "豌豆", "黄瓜", "大白菜"]},
|
||||
"稀有": {"概率": 0.12, "数量范围": [1, 3], "种子池": ["草莓", "花椰菜", "柿子", "蓝莓", "树莓"]},
|
||||
"史诗": {"概率": 0.025, "数量范围": [1, 2], "种子池": ["葡萄", "南瓜", "芦笋", "茄子", "向日葵", "蕨菜"]},
|
||||
"传奇": {"概率": 0.005, "数量范围": [1, 1], "种子池": ["西瓜", "甘蔗", "香草", "甜菜", "人参", "富贵竹", "芦荟", "哈密瓜"]}
|
||||
},
|
||||
"连续签到奖励": {
|
||||
"第3天": {"额外金币": 100, "额外经验": 50, "描述": "连续签到奖励"},
|
||||
"第7天": {"额外金币": 200, "额外经验": 100, "描述": "一周连击奖励"},
|
||||
"第14天": {"额外金币": 500, "额外经验": 200, "描述": "半月连击奖励"},
|
||||
"第21天": {"额外金币": 800, "额外经验": 300, "描述": "三周连击奖励"},
|
||||
"第30天": {"额外金币": 1500, "额外经验": 500, "描述": "满月连击奖励"}
|
||||
}
|
||||
}
|
||||
|
||||
success = api.update_daily_checkin_config(original_config)
|
||||
if success:
|
||||
print("✓ 成功恢复原始配置")
|
||||
else:
|
||||
print("✗ 恢复原始配置失败")
|
||||
return False
|
||||
except Exception as e:
|
||||
print(f"✗ 恢复原始配置异常: {e}")
|
||||
return False
|
||||
|
||||
# 6. 测试配置数据完整性
|
||||
print("\n6. 测试配置数据完整性:")
|
||||
try:
|
||||
final_config = api.get_daily_checkin_config()
|
||||
if final_config:
|
||||
# 检查必要字段是否存在
|
||||
required_fields = ["基础奖励", "种子奖励", "连续签到奖励"]
|
||||
missing_fields = [field for field in required_fields if field not in final_config]
|
||||
|
||||
if not missing_fields:
|
||||
print("✓ 配置数据完整性检查通过")
|
||||
print(f" 包含字段: {', '.join(required_fields)}")
|
||||
else:
|
||||
print(f"✗ 配置数据缺少字段: {missing_fields}")
|
||||
return False
|
||||
else:
|
||||
print("✗ 无法获取最终配置进行完整性检查")
|
||||
return False
|
||||
|
||||
except Exception as e:
|
||||
print(f"✗ 配置数据完整性检查异常: {e}")
|
||||
return False
|
||||
|
||||
# 清理资源
|
||||
api.disconnect()
|
||||
|
||||
print("\n=== 所有测试通过!MongoDB迁移功能正常 ===")
|
||||
return True
|
||||
|
||||
if __name__ == "__main__":
|
||||
success = test_mongodb_migration()
|
||||
if success:
|
||||
print("\n🎉 MongoDB迁移测试成功完成!")
|
||||
sys.exit(0)
|
||||
else:
|
||||
print("\n❌ MongoDB迁移测试失败!")
|
||||
sys.exit(1)
|
||||
Reference in New Issue
Block a user