Files
Sprout-Farm/SproutFarm-Backend/test/test_special_farm.py
2025-09-15 19:10:37 +08:00

151 lines
5.4 KiB
Python

#!/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)