Skip to main content
Glama
Huangwh826

Halo MCP Server

by Huangwh826
README.md12.5 kB
# Halo MCP Server 测试指南 本目录包含 Halo MCP Server 的所有测试代码和文档。 ## 📁 文件结构 ``` tests/ ├── README.md # 本文件 - 测试指南 ├── conftest.py # Pytest 配置和 fixtures ├── run_comprehensive_test.py # 综合测试套件(主要测试文件) └── README_COMPREHENSIVE_TEST.md # 综合测试详细文档 ``` ## 🎯 测试概述 ### 综合测试套件 **文件**: [`run_comprehensive_test.py`](run_comprehensive_test.py) 全面覆盖所有 30 个 MCP 工具的集成测试: - ✅ **分类管理** (6个工具): create_category, list_categories, get_category, update_category, get_category_posts, delete_category - ✅ **标签管理** (7个工具): create_tag, list_tags, get_tag, update_tag, list_console_tags, get_tag_posts, delete_tag - ✅ **附件管理** (8个工具): list_attachment_groups, create_attachment_group, get_attachment_policies, upload_attachment, list_attachments, get_attachment, delete_attachment, 等 - ✅ **文章管理** (9个工具): create_post, list_my_posts, get_post, get_post_draft, update_post_draft, update_post, publish_post, unpublish_post, delete_post ## 🚀 快速开始 ### 方式一:直接运行(推荐) ```bash # 进入 tests 目录 cd tests # 运行综合测试 python run_comprehensive_test.py ``` **优点**: - ✅ 无需安装额外依赖 - ✅ 即开即用 - ✅ 详细的控制台输出 ### 方式二:使用 Pytest ```bash # 安装 pytest(如果尚未安装) pip install pytest pytest-asyncio pytest-ordering # 运行所有测试 pytest -v -s # 运行指定测试文件 pytest run_comprehensive_test.py -v -s ``` **优点**: - ✅ 标准化的测试框架 - ✅ 丰富的报告选项 - ✅ 更好的测试组织 ## 📊 测试流程 综合测试按照以下顺序执行,模拟真实的博客管理场景: ```mermaid graph TD A[1. 创建基础资源] --> B[创建分类] A --> C[创建标签] A --> D[创建附件分组] B --> E[2. 查询和验证] C --> E D --> E E --> F[列出分类/标签/附件] F --> G[获取详情] G --> H[3. 更新资源] H --> I[更新分类/标签] I --> J[4. 创建和管理文章] J --> K[创建文章(关联分类和标签)] K --> L[编辑草稿] L --> M[更新元数据] M --> N[发布文章] N --> O[取消发布] O --> P[5. 清理测试数据] P --> Q[删除文章] Q --> R[删除附件] R --> S[删除标签] S --> T[删除分类] T --> U[6. 生成测试报告] ``` ## ⚙️ 环境配置 ### 必需环境变量 测试需要以下环境变量: ```bash # Halo 服务器地址 export HALO_BASE_URL="http://localhost:8091" # Halo 访问令牌 export HALO_TOKEN="your_access_token_here" ``` 或者在项目根目录创建 `.env` 文件: ```env HALO_BASE_URL=http://localhost:8091 HALO_TOKEN=your_access_token_here MCP_LOG_LEVEL=INFO ``` ### 可选配置 ```bash # 日志级别 export MCP_LOG_LEVEL="DEBUG" # DEBUG, INFO, WARNING, ERROR # 请求超时(秒) export MCP_TIMEOUT="30" ``` ## 📝 测试用例详解 ### 1. 分类管理测试 (测试 1-5) #### 测试 1: `create_category` **目的**: 创建博客分类 **验证**: 分类创建成功,返回分类标识符 **数据**: 创建 1 个测试分类 #### 测试 2: `list_categories` **目的**: 列出所有分类 **验证**: 能够查询到刚创建的分类 **断言**: 分类列表包含测试分类 #### 测试 3: `get_category` **目的**: 获取分类详情 **验证**: 返回完整的分类信息 **检查**: 分类名称、描述、优先级等字段 #### 测试 4: `update_category` **目的**: 更新分类信息 **验证**: 成功修改分类属性 **操作**: 更新描述和优先级 #### 测试 5: `get_category_posts` **目的**: 查询分类下的文章 **验证**: 返回文章列表(可能为空) **说明**: 新创建的分类通常没有文章 ### 2. 标签管理测试 (测试 6-11) #### 测试 6: `create_tag` **目的**: 创建博客标签 **验证**: 标签创建成功 **数据**: 创建 2 个测试标签(不同颜色) #### 测试 7: `list_tags` **目的**: 列出所有标签 **验证**: 标签列表正常返回 #### 测试 8: `get_tag` **目的**: 获取标签详情 **验证**: 返回完整的标签信息 #### 测试 9: `update_tag` **目的**: 更新标签 **验证**: 成功修改标签颜色 #### 测试 10: `list_console_tags` **目的**: 列出控制台标签 **验证**: 后台标签列表正常 #### 测试 11: `get_tag_posts` **目的**: 查询标签下的文章 **验证**: 返回文章列表 ### 3. 附件管理测试 (测试 12-17) #### 测试 12-13: 附件分组 **操作**: 列出和创建附件分组 **验证**: 分组管理功能正常 #### 测试 14: `get_attachment_policies` **目的**: 查询存储策略 **验证**: 返回可用的存储策略列表 #### 测试 15: `upload_attachment` **目的**: 上传本地文件 **验证**: 文件上传成功 **测试文件**: 创建临时文本文件 #### 测试 16-17: 附件查询 **操作**: 列出附件和获取附件详情 **验证**: 附件信息完整 ### 4. 文章管理测试 (测试 18-25) #### 测试 18: `create_post` **目的**: 创建博客文章 **内容**: Markdown 格式的测试文章 **关联**: 使用前面创建的分类和标签 **验证**: 文章创建成功 #### 测试 19: `list_my_posts` **目的**: 列出用户文章 **验证**: 能找到刚创建的文章 #### 测试 20: `get_post` **目的**: 获取文章详情 **验证**: 返回完整的文章内容和元数据 #### 测试 21: `get_post_draft` **目的**: 获取文章草稿 **验证**: 返回可编辑的草稿版本 #### 测试 22: `update_post_draft` **目的**: 更新草稿内容 **操作**: 修改文章 Markdown 内容 **验证**: 草稿更新成功 #### 测试 23: `update_post` **目的**: 更新文章元数据 **操作**: 修改摘要、置顶状态等 **验证**: 元数据更新成功 #### 测试 24: `publish_post` **目的**: 发布文章 **流程**: 草稿 → 已发布 **验证**: 文章状态变为已发布 #### 测试 25: `unpublish_post` **目的**: 取消发布 **流程**: 已发布 → 草稿 **验证**: 文章状态变回草稿 ### 5. 清理测试 (测试 26-29) 按顺序删除所有测试数据: 1. 删除文章 2. 删除附件 3. 删除标签 4. 删除分类 ## 📈 测试报告 ### 控制台输出示例 ``` ================================================================================ 🚀 开始 Halo MCP Server 全面测试 ================================================================================ ✓ 客户端初始化成功 ================================================================================ 测试 1/30: create_category - 创建博客分类 ================================================================================ ✓ 测试 1 通过: create_category ... (中间测试省略) ... ================================================================================ 🎉 测试总结 ================================================================================ 总测试数: 30 ✓ 通过: 30 ✗ 失败: 0 创建的资源: - 分类: 1 - 标签: 2 - 附件: 1 - 文章: 1 - 分组: 1 ================================================================================ ``` ### 生成 HTML 报告 使用 pytest 可以生成详细的 HTML 测试报告: ```bash # 安装报告插件 pip install pytest-html # 生成报告 pytest run_comprehensive_test.py --html=report.html --self-contained-html ``` ## 🐛 故障排除 ### 常见问题 #### 问题 1: 连接失败 **错误信息**: ``` Error: Failed to connect to Halo server ``` **解决方案**: 1. 检查 `HALO_BASE_URL` 配置是否正确 2. 确认 Halo 服务器正在运行 3. 测试网络连接: `curl http://localhost:8091` #### 问题 2: 认证失败 **错误信息**: ``` Error: Authentication failed ``` **解决方案**: 1. 检查 `HALO_TOKEN` 是否有效 2. 在 Halo 后台重新生成令牌 3. 确认令牌权限包含所需的 API 访问权限 #### 问题 3: 测试跳过 **提示信息**: ``` Warning: 没有可用的分类/标签/附件 ``` **说明**: - 这是正常现象 - 某些测试依赖前序测试创建的资源 - 如果前序测试失败,后续测试会被跳过 #### 问题 4: 文件上传失败 **错误信息**: ``` Error: Failed to upload attachment ``` **解决方案**: 1. 检查 Halo 存储策略配置 2. 确认磁盘空间充足 3. 验证文件系统权限 ### 调试技巧 #### 1. 启用详细日志 ```bash # 设置 DEBUG 级别日志 export MCP_LOG_LEVEL=DEBUG python run_comprehensive_test.py ``` #### 2. 运行单个测试 修改 `run_comprehensive_test.py` 中的 `run_all_tests` 方法,只运行需要的测试: ```python async def run_all_tests(self): await self.setup() try: # 只运行需要测试的部分 await self.test_01_create_category() await self.test_02_list_categories() # ... 注释掉其他测试 finally: await self.teardown() ``` #### 3. 保留测试数据 如果需要手动检查测试数据,注释掉清理代码: ```python # 注释掉清理步骤 # await self.test_26_delete_post() # await self.test_27_delete_attachment() # await self.test_28_delete_tag() # await self.test_29_delete_category() ``` ## 🔧 扩展测试 ### 添加自定义测试 你可以在 `run_comprehensive_test.py` 中添加自己的测试方法: ```python async def test_custom_scenario(self): """自定义测试场景""" from halo_mcp_server.tools.post_tools import create_post_tool self.log_test(31, "custom_test", "我的自定义测试") try: # 你的测试逻辑 args = { "title": "自定义测试文章", "content": "测试内容" } result = await create_post_tool(self.client, args) # ... 验证逻辑 self.record_result(31, "custom_test", True, "测试通过") except Exception as e: self.record_result(31, "custom_test", False, str(e)) ``` 然后在 `run_all_tests` 方法中调用: ```python async def run_all_tests(self): # ... 现有测试 ... await self.test_custom_scenario() ``` ## 📚 相关文档 - **[综合测试详细文档](README_COMPREHENSIVE_TEST.md)** - 更详细的测试说明 - **[使用示例](../examples/usage_examples.md)** - 工具使用示例 - **[快速开始示例](../examples/quick_start_example.md)** - 快速入门指南 - **[主 README](../README.md)** - 项目总览 - **[API 文档](../halo_apis_docs/apis.md)** - Halo API 参考 ## 💡 最佳实践 ### 1. 测试前准备 - ✅ 确保 Halo 服务器正常运行 - ✅ 配置正确的环境变量 - ✅ 备份重要数据(如果在生产环境测试) ### 2. 测试中注意 - ✅ 观察控制台输出,及时发现问题 - ✅ 记录失败的测试用例 - ✅ 检查创建的测试数据是否正确 ### 3. 测试后检查 - ✅ 验证测试数据已清理 - ✅ 检查测试报告 - ✅ 记录遇到的问题和解决方案 ## 🤝 贡献测试 欢迎贡献新的测试用例!请遵循以下步骤: 1. **Fork 项目** 2. **创建测试分支**: `git checkout -b feature/new-test` 3. **添加测试代码**: 在 `run_comprehensive_test.py` 中添加新测试 4. **运行测试**: 确保所有测试通过 5. **提交代码**: `git commit -m "Add new test for XXX"` 6. **推送分支**: `git push origin feature/new-test` 7. **创建 Pull Request** ## 📊 测试覆盖率 当前测试覆盖情况: | 模块 | 工具数 | 已测试 | 覆盖率 | |------|--------|--------|--------| | 文章管理 | 9 | 9 | 100% ✅ | | 分类管理 | 6 | 6 | 100% ✅ | | 标签管理 | 7 | 7 | 100% ✅ | | 附件管理 | 8 | 8 | 100% ✅ | | **总计** | **30** | **30** | **100%** ✅ | ## ❓ 获取帮助 如果遇到问题: 1. 📖 查看 [FAQ](../README.md#常见问题) 2. 🔍 搜索 [Issues](https://github.com/Huangwh826/halo-mcp-server/issues) 3. 💬 提出新的 [Issue](https://github.com/Huangwh826/halo-mcp-server/issues/new) 4. 📧 联系维护者 --- **祝测试顺利!** 🎉 如果这个测试套件对你有帮助,欢迎给项目 [⭐ Star](https://github.com/Huangwh826/halo-mcp-server) 支持!

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/Huangwh826/halo-mcp-server'

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