返回市场
毒素测试

毒素测试

作者:that1guy155 星标更新:2025-01-19

项目介绍

Tox 测试 MCP 服务器

这是一个执行 tox 命令以在项目中使用 pytest 运行 Python 测试的 MCP 服务器。该服务器通过模型上下文协议(MCP)提供了一种方便的方式来运行和管理 Python 测试。

特性

工具

  • run_tox_tests - 使用各种模式和选项执行 tox 测试
    • 支持不同的执行模式:
      • all:运行所有测试或特定组的测试
      • file:运行特定文件中的测试
      • case:运行特定的测试用例
      • directory:运行指定目录中的所有测试
    • 支持的测试组:
      • clients:与客户端相关的测试
      • api:API 端点测试
      • auth:认证测试
      • uploads:上传功能测试
      • routes:路由处理器测试

开发

安装依赖项:

npm install

构建服务器:

npm run build

开发时自动重建:

npm run watch

安装

要在 VSCode 中使用,请将服务器配置添加到您的 MCP 设置文件中: ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json

{
  "mcpServers": {
    "tox-testing": {
      "command": "node",
      "args": ["/path/to/tox-testing/build/index.js"],
      "env": {
        "TOX_APP_DIR": "/path/to/your/python/project",
        "TOX_TIMEOUT": "600"
      }
    }
  }
}

配置选项

  • env.TOX_TIMEOUT:(可选)等待测试执行完成的最大时间(秒)。如果测试运行时间超过此超时时间,则会被终止。默认值为 600 秒(10 分钟)
  • env.TOX_APP_DIR:(必需)包含 tox.ini 文件的目录。这是执行 tox 命令的位置。路径应指向包含 tox.ini 的 Python 项目的根目录。

超时设置特别重要,因为它可以:

  • 防止挂起的测试进程
  • 管理长时间运行的集成测试
  • 确保 CI/CD 管道不会卡住

使用

该服务器提供了一个工具 run_tox_tests,可以在不同模式下使用:

工具参数

// 运行所有测试
{
  "mode": "all"
}

// 运行特定组的测试
{
  "mode": "all",
  "group": "api"
}

// 运行特定文件中的测试
{
  "mode": "file",
  "testFile": "tests/test_api.py"
}

// 运行特定的测试用例
{
  "mode": "case",
  "testFile": "tests/test_api.py",
  "testCase": "test_endpoint_response"
}

// 运行特定目录中的测试
{
  "mode": "directory",
  "directory": "tests/api/"
}

与 Cline 结合使用

当使用此 MCP 与 Cline 结合时,您可以配置 Cline 的自定义指令来高效地处理测试执行。以下是一个推荐的工作流程:

如果您被要求在项目上运行测试,请使用 tox-testing MCP。请按照以下步骤操作:
1. 除非您被告知要运行特定的测试文件或测试用例,否则运行项目中的所有测试。
2. 查看并单独重新运行每个失败的测试用例,根据其输出进行故障排除和修复问题。
3. 重复步骤 2,直到测试用例通过。
4. 一旦步骤 1 中的所有失败测试用例都通过了,再次运行所有测试,并重复所有步骤,直到所有测试都通过。

此工作流程确保:

  • 通过首先运行所有测试实现全面的测试覆盖
  • 通过隔离失败的测试用例进行有针对性的调试
  • 通过重新测试个别案例验证修复
  • 最终通过再次运行所有测试进行验证

与 Cline 的示例交互:

您:运行这个项目的测试
Cline:我将使用 tox-testing MCP 来运行所有测试:
{
  "mode": "all"
}

您:修复 test_api.py 中的失败测试
Cline:我将首先运行特定的测试文件:
{
  "mode": "file",
  "testFile": "tests/test_api.py"
}
然后分别解决每个失败的测试用例:
{
  "mode": "case",
  "testFile": "tests/test_api.py",
  "testCase": "test_endpoint_response"
}

贡献

请参阅 CONTRIBUTING.md 了解我们的行为准则以及提交拉取请求的过程。