test_config_fix.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. 测试配置工具修复后的行为
  5. 验证从Excel导入JSON后不再包含stats.attack字段
  6. """
  7. import json
  8. import sys
  9. from pathlib import Path
  10. def test_enemies_json_structure():
  11. """测试enemies.json的结构是否正确"""
  12. json_path = Path(__file__).parent.parent / 'enemies.json'
  13. if not json_path.exists():
  14. print(f"错误: JSON文件不存在: {json_path}")
  15. return False
  16. try:
  17. with open(json_path, 'r', encoding='utf-8') as f:
  18. data = json.load(f)
  19. enemies = data.get('enemies', [])
  20. print(f"找到 {len(enemies)} 个敌人配置")
  21. has_stats_attack = False
  22. attack_issues = []
  23. for enemy in enemies:
  24. enemy_id = enemy.get('id', 'unknown')
  25. stats = enemy.get('stats', {})
  26. combat = enemy.get('combat', {})
  27. # 检查stats中是否有attack字段
  28. if 'attack' in stats:
  29. has_stats_attack = True
  30. attack_issues.append(f"敌人 {enemy_id} 的stats中包含attack字段: {stats['attack']}")
  31. # 检查combat中是否有attackDamage字段
  32. if 'attackDamage' not in combat:
  33. attack_issues.append(f"敌人 {enemy_id} 的combat中缺少attackDamage字段")
  34. else:
  35. print(f"敌人 {enemy_id}: combat.attackDamage = {combat['attackDamage']}")
  36. if has_stats_attack:
  37. print("\n❌ 测试失败: 发现stats.attack字段")
  38. for issue in attack_issues:
  39. print(f" - {issue}")
  40. return False
  41. else:
  42. print("\n✅ 测试通过: 没有发现stats.attack字段")
  43. print("✅ 所有敌人都使用combat.attackDamage作为攻击力源")
  44. return True
  45. except Exception as e:
  46. print(f"测试失败: {e}")
  47. return False
  48. if __name__ == "__main__":
  49. print("开始测试敌人配置结构...")
  50. success = test_enemies_json_structure()
  51. sys.exit(0 if success else 1)