优化项目架构
This commit is contained in:
151
SproutFarm-Backend/test/test_special_farm.py
Normal file
151
SproutFarm-Backend/test/test_special_farm.py
Normal file
@@ -0,0 +1,151 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
特殊农场管理系统测试脚本
|
||||
作者: AI Assistant
|
||||
功能: 测试特殊农场的种植功能
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
from SpecialFarm import SpecialFarmManager
|
||||
|
||||
def test_special_farm():
|
||||
"""
|
||||
测试特殊农场功能
|
||||
"""
|
||||
print("=" * 50)
|
||||
print("特殊农场管理系统测试")
|
||||
print("=" * 50)
|
||||
|
||||
try:
|
||||
# 创建管理器(使用测试环境)
|
||||
print("1. 初始化特殊农场管理器...")
|
||||
manager = SpecialFarmManager("test")
|
||||
print("✓ 管理器初始化成功")
|
||||
|
||||
# 测试数据库连接
|
||||
print("\n2. 测试数据库连接...")
|
||||
if manager.mongo_api.is_connected():
|
||||
print("✓ 数据库连接成功")
|
||||
else:
|
||||
print("✗ 数据库连接失败")
|
||||
return False
|
||||
|
||||
# 测试获取作物配置
|
||||
print("\n3. 测试获取作物配置...")
|
||||
crop_data = manager.get_crop_data()
|
||||
if crop_data:
|
||||
print(f"✓ 成功获取作物配置,共 {len(crop_data)} 种作物")
|
||||
|
||||
# 检查杂交树是否存在
|
||||
if "杂交树1" in crop_data and "杂交树2" in crop_data:
|
||||
print("✓ 杂交树1和杂交树2配置存在")
|
||||
print(f" - 杂交树1: {crop_data['杂交树1']['作物名称']}")
|
||||
print(f" - 杂交树2: {crop_data['杂交树2']['作物名称']}")
|
||||
else:
|
||||
print("✗ 杂交树配置不存在")
|
||||
return False
|
||||
else:
|
||||
print("✗ 获取作物配置失败")
|
||||
return False
|
||||
|
||||
# 测试获取杂交农场数据
|
||||
print("\n4. 测试获取杂交农场数据...")
|
||||
farm_config = manager.special_farms["杂交农场"]
|
||||
object_id = farm_config["object_id"]
|
||||
|
||||
player_data = manager.get_player_data_by_object_id(object_id)
|
||||
if player_data:
|
||||
print(f"✓ 成功获取杂交农场数据")
|
||||
print(f" - 农场名称: {player_data.get('农场名称', 'Unknown')}")
|
||||
print(f" - 玩家昵称: {player_data.get('玩家昵称', 'Unknown')}")
|
||||
print(f" - 土地数量: {len(player_data.get('农场土地', []))}")
|
||||
|
||||
# 统计土地状态
|
||||
farm_lands = player_data.get("农场土地", [])
|
||||
digged_count = sum(1 for land in farm_lands if land.get("is_diged", False))
|
||||
planted_count = sum(1 for land in farm_lands if land.get("is_planted", False))
|
||||
|
||||
print(f" - 已开垦土地: {digged_count}")
|
||||
print(f" - 已种植土地: {planted_count}")
|
||||
else:
|
||||
print("✗ 获取杂交农场数据失败")
|
||||
return False
|
||||
|
||||
# 测试种植功能
|
||||
print("\n5. 测试杂交农场种植功能...")
|
||||
if manager.plant_crops_in_farm("杂交农场"):
|
||||
print("✓ 杂交农场种植成功")
|
||||
|
||||
# 重新获取数据验证种植结果
|
||||
updated_data = manager.get_player_data_by_object_id(object_id)
|
||||
if updated_data:
|
||||
farm_lands = updated_data.get("农场土地", [])
|
||||
planted_count = sum(1 for land in farm_lands if land.get("is_planted", False))
|
||||
|
||||
# 统计种植的作物类型
|
||||
crop_types = {}
|
||||
for land in farm_lands:
|
||||
if land.get("is_planted", False):
|
||||
crop_type = land.get("crop_type", "")
|
||||
crop_types[crop_type] = crop_types.get(crop_type, 0) + 1
|
||||
|
||||
print(f" - 种植后已种植土地: {planted_count}")
|
||||
print(f" - 作物分布:")
|
||||
for crop_type, count in crop_types.items():
|
||||
print(f" * {crop_type}: {count} 块")
|
||||
else:
|
||||
print("✗ 杂交农场种植失败")
|
||||
return False
|
||||
|
||||
print("\n" + "=" * 50)
|
||||
print("✓ 所有测试通过!特殊农场管理系统工作正常")
|
||||
print("=" * 50)
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f"\n✗ 测试过程中出错: {str(e)}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
return False
|
||||
|
||||
def test_manual_maintenance():
|
||||
"""
|
||||
测试手动维护功能
|
||||
"""
|
||||
print("\n" + "=" * 50)
|
||||
print("测试手动维护功能")
|
||||
print("=" * 50)
|
||||
|
||||
try:
|
||||
manager = SpecialFarmManager("test")
|
||||
|
||||
print("执行手动维护...")
|
||||
if manager.manual_maintenance("杂交农场"):
|
||||
print("✓ 手动维护成功")
|
||||
else:
|
||||
print("✗ 手动维护失败")
|
||||
|
||||
except Exception as e:
|
||||
print(f"✗ 手动维护测试出错: {str(e)}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
# 运行基础测试
|
||||
success = test_special_farm()
|
||||
|
||||
if success:
|
||||
# 运行手动维护测试
|
||||
test_manual_maintenance()
|
||||
|
||||
print("\n" + "=" * 50)
|
||||
print("使用说明:")
|
||||
print("1. 自动模式: python SpecialFarm.py [test|production]")
|
||||
print("2. 手动模式: python SpecialFarm.py [test|production] manual [农场名称]")
|
||||
print("3. 日志文件: special_farm.log")
|
||||
print("=" * 50)
|
||||
else:
|
||||
print("\n测试失败,请检查配置和数据库连接")
|
||||
sys.exit(1)
|
||||
Reference in New Issue
Block a user