Tox Testing

Executa comandos tox para rodar testes Python com pytest. Requer que a variável de ambiente TOX_APP_DIR esteja definida.

Documentação

Servidor MCP Tox Testing

Um servidor MCP que executa comandos tox para rodar testes Python dentro de um projeto usando pytest. Este servidor fornece uma maneira conveniente de executar e gerenciar testes Python através do Model Context Protocol (MCP).

Recursos

Ferramentas

  • run_tox_tests - Executa testes tox com vários modos e opções
    • Suporta diferentes modos de execução:
      • all: Executa todos os testes ou testes de um grupo específico
      • file: Executa testes de um arquivo específico
      • case: Executa um caso de teste específico
      • directory: Executa todos os testes em um diretório especificado
    • Grupos de teste suportados:
      • clients: Testes relacionados ao cliente
      • api: Testes de endpoints de API
      • auth: Testes de autenticação
      • uploads: Testes de funcionalidade de upload
      • routes: Testes de manipuladores de rotas

Desenvolvimento

Instale as dependências:

npm install

Compile o servidor:

npm run build

Para desenvolvimento com recompilação automática:

npm run watch

Instalação

Para usar com VSCode, adicione a configuração do servidor ao seu arquivo de configurações MCP em: ~/.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"
      }
    }
  }
}

Opções de Configuração

  • env.TOX_TIMEOUT: (Opcional) Tempo máximo em segundos para aguardar a conclusão da execução dos testes. Se uma execução de teste demorar mais que esse tempo limite, ela será encerrada. O padrão é 600 segundos (10 minutos)
  • env.TOX_APP_DIR: (Obrigatório) Diretório que contém o arquivo tox.ini. É a partir daqui que os comandos tox serão executados. O caminho deve apontar para a raiz do seu projeto Python onde o tox.ini está localizado.

O tempo limite é particularmente importante para:

  • Prevenir processos de teste travados
  • Gerenciar testes de integração de longa duração
  • Garantir que pipelines de CI/CD não fiquem presos

Uso

O servidor fornece uma única ferramenta run_tox_tests que pode ser usada em diferentes modos:

Argumentos da Ferramenta

// Run all tests
{
  "mode": "all"
}

// Run tests from a specific group
{
  "mode": "all",
  "group": "api"
}

// Run tests from a specific file
{
  "mode": "file",
  "testFile": "tests/test_api.py"
}

// Run a specific test case
{
  "mode": "case",
  "testFile": "tests/test_api.py",
  "testCase": "test_endpoint_response"
}

// Run tests from a specific directory
{
  "mode": "directory",
  "directory": "tests/api/"
}

Usando com Cline

Ao usar este MCP com Cline, você pode configurar as Instruções Personalizadas do Cline para lidar com a execução de testes de forma eficiente. Aqui está um fluxo de trabalho recomendado:

If asked to run tests on the project, use the tox-testing MCP. Follow these steps:
1. Run all tests across the project unless you are given instructions to run a specific test file or test case. 
2. Review and rerun each failed test case individually as you troubleshoot and fix the issue from its output.
3. Repeat step 2 until the testcase passes.
4. Once all failed test cases from step 1 are passing rerun all tests again and repeat all steps until all tests pass.

Este fluxo de trabalho garante:

  • Cobertura abrangente de testes executando todos os testes primeiro
  • Depuração focada isolando casos de teste com falha
  • Verificação de correções testando novamente casos individuais
  • Validação final executando todos os testes novamente

Exemplos de interações com Cline:

You: Run the tests for this project
Cline: I'll use the tox-testing MCP to run all tests:
{
  "mode": "all"
}

You: Fix the failing test in test_api.py
Cline: I'll first run the specific test file:
{
  "mode": "file",
  "testFile": "tests/test_api.py"
}
Then address each failing test case individually:
{
  "mode": "case",
  "testFile": "tests/test_api.py",
  "testCase": "test_endpoint_response"
}

Contribuindo

Consulte CONTRIBUTING.md para detalhes sobre nosso código de conduta e o processo para enviar pull requests.