Skip to main content
Glama
ferocknew

Fusion360 LLM Assistant

by ferocknew
quick_test.py7.05 kB
#!/usr/bin/env python3 """ 快速测试脚本 - 用于快速验证单个工具功能 """ import asyncio import sys import os # 添加项目根目录到路径 project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0, project_root) from tests.test_base import Fusion360TestBase class QuickTester(Fusion360TestBase): """快速测试器 - 使用真实代码""" def __init__(self): # 手动初始化,因为不是标准的 unittest import unittest self.loop = asyncio.new_event_loop() asyncio.set_event_loop(self.loop) # 初始化基类 super().__init__() self.test_results = [] async def test_document_creation(self): """快速测试文档创建""" print("🧪 测试文档创建...") if not self.check_prerequisites(): print("❌ 连接检查失败") return False result = await self.call_real_tool("create_document", name="快速测试文档", units="mm" ) if result.get("success"): print(f"✅ 文档创建成功") else: print(f"❌ 文档创建失败: {result.get('error')}") return result.get("success", False) async def test_object_creation(self): """快速测试对象创建""" print("🧪 测试对象创建...") # 测试圆柱体 cylinder_result = await self.api.create_object( "extrude", {"base_feature": "circle", "radius": 25, "height": 50} ) # 测试立方体 box_result = await self.api.create_object( "extrude", {"base_feature": "rectangle", "length": 40, "width": 30, "height": 20}, position=[60, 0, 0] ) success_count = 0 if cylinder_result["success"]: print(f"✅ 圆柱体创建成功: {cylinder_result['result']['object_id']}") success_count += 1 else: print(f"❌ 圆柱体创建失败") if box_result["success"]: print(f"✅ 立方体创建成功: {box_result['result']['object_id']}") success_count += 1 else: print(f"❌ 立方体创建失败") return success_count == 2 async def test_object_management(self): """快速测试对象管理""" print("🧪 测试对象管理...") # 获取对象列表 objects_result = await self.api.get_objects() if not objects_result["success"]: print("❌ 获取对象列表失败") return False objects = objects_result["result"]["objects"] print(f"✅ 获取对象列表成功,共 {len(objects)} 个对象") if len(objects) == 0: print("⚠️ 对象列表为空,跳过后续测试") return True # 测试获取第一个对象 first_obj_id = objects[0]["id"] obj_result = await self.api.get_object(first_obj_id) if obj_result["success"]: print(f"✅ 获取对象详情成功: {first_obj_id}") else: print(f"❌ 获取对象详情失败: {first_obj_id}") return False # 测试删除对象 delete_result = await self.api.delete_object(first_obj_id) if delete_result["success"]: print(f"✅ 删除对象成功: {first_obj_id}") else: print(f"❌ 删除对象失败: {first_obj_id}") return False return True async def test_parts_library(self): """快速测试零件库""" print("🧪 测试零件库...") parts_result = await self.api.get_parts_list() if parts_result["success"]: parts = parts_result["result"]["parts"] print(f"✅ 获取零件列表成功,共 {len(parts)} 个零件") # 显示前几个零件 for i, part in enumerate(parts[:3]): print(f" {i+1}. {part['library']}/{part['name']} ({part['category']})") if len(parts) > 3: print(f" ... 还有 {len(parts) - 3} 个零件") return True else: print(f"❌ 获取零件列表失败: {parts_result.get('error')}") return False async def run_all_quick_tests(self): """运行所有快速测试""" print("🚀 开始 Fusion360 MCP 快速测试") print("=" * 50) tests = [ ("文档创建", self.test_document_creation), ("对象创建", self.test_object_creation), ("对象管理", self.test_object_management), ("零件库", self.test_parts_library), ] results = [] for test_name, test_func in tests: print(f"\n📋 {test_name} 测试:") try: success = await test_func() results.append((test_name, success)) status = "✅ 通过" if success else "❌ 失败" print(f" 结果: {status}") except Exception as e: print(f" 结果: ❌ 异常 - {e}") results.append((test_name, False)) # 打印总结 print("\n" + "=" * 50) print("📊 快速测试总结:") passed = sum(1 for _, success in results if success) total = len(results) print(f"总测试数: {total}") print(f"通过: {passed}") print(f"失败: {total - passed}") print(f"成功率: {passed/total*100:.1f}%") print("\n详细结果:") for test_name, success in results: status = "✅" if success else "❌" print(f" {status} {test_name}") if passed == total: print("\n🎉 所有快速测试通过!") elif passed >= total * 0.8: print(f"\n👍 大部分测试通过 ({passed}/{total})") else: print(f"\n⚠️ 需要关注,多个测试失败 ({total-passed}/{total})") return passed == total async def main(): """主函数""" if len(sys.argv) > 1: test_name = sys.argv[1].lower() tester = QuickTester() # 单独运行指定测试 if test_name in ["doc", "document", "文档"]: await tester.test_document_creation() elif test_name in ["obj", "object", "对象"]: await tester.test_object_creation() elif test_name in ["mgmt", "management", "管理"]: await tester.test_object_management() elif test_name in ["part", "parts", "零件"]: await tester.test_parts_library() else: print(f"未知的测试类型: {test_name}") print("可用选项: doc/document, obj/object, mgmt/management, part/parts") print("或者运行不带参数的完整测试") else: # 运行所有测试 tester = QuickTester() await tester.run_all_quick_tests() if __name__ == "__main__": asyncio.run(main())

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ferocknew/fusion360_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server