Tox Testing

Ejecuta comandos tox para ejecutar pruebas de Python con pytest. Requiere que la variable de entorno TOX_APP_DIR esté configurada.

Documentación

Servidor MCP de Tox Testing

Un servidor MCP que ejecuta comandos tox para correr pruebas de Python dentro de un proyecto usando pytest. Este servidor proporciona una forma conveniente de ejecutar y gestionar pruebas de Python a través del Protocolo de Contexto de Modelo (MCP).

Características

Herramientas

  • run_tox_tests - Ejecuta pruebas tox con varios modos y opciones
    • Soporta diferentes modos de ejecución:
      • all: Ejecuta todas las pruebas o pruebas de un grupo específico
      • file: Ejecuta pruebas de un archivo específico
      • case: Ejecuta un caso de prueba específico
      • directory: Ejecuta todas las pruebas en un directorio especificado
    • Grupos de prueba soportados:
      • clients: Pruebas relacionadas con el cliente
      • api: Pruebas de endpoints de API
      • auth: Pruebas de autenticación
      • uploads: Pruebas de funcionalidad de carga
      • routes: Pruebas de manejadores de rutas

Desarrollo

Instalar dependencias:

npm install

Compilar el servidor:

npm run build

Para desarrollo con reconstrucción automática:

npm run watch

Instalación

Para usar con VSCode, agrega la configuración del servidor a tu archivo de configuración de MCP en: ~/.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"
      }
    }
  }
}

Opciones de Configuración

  • env.TOX_TIMEOUT: (Opcional) Tiempo máximo en segundos para esperar a que la ejecución de pruebas se complete. Si una ejecución de pruebas tarda más que este tiempo de espera, será terminada. El valor predeterminado es 600 segundos (10 minutos)
  • env.TOX_APP_DIR: (Requerido) Directorio que contiene el archivo tox.ini. Aquí es donde se ejecutarán los comandos tox. La ruta debe apuntar a la raíz de tu proyecto de Python donde se encuentra tox.ini.

El tiempo de espera es particularmente importante para:

  • Prevenir procesos de prueba colgados
  • Gestionar pruebas de integración de larga duración
  • Asegurar que los pipelines de CI/CD no se queden atascados

Uso

El servidor proporciona una única herramienta run_tox_tests que se puede usar en diferentes modos:

Argumentos de la Herramienta

// 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/"
}

Uso con Cline

Cuando uses este MCP con Cline, puedes configurar las Instrucciones Personalizadas de Cline para manejar la ejecución de pruebas de manera eficiente. Aquí hay un flujo de trabajo 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 flujo de trabajo asegura:

  • Cobertura integral de pruebas ejecutando todas las pruebas primero
  • Depuración enfocada aislando casos de prueba fallidos
  • Verificación de correcciones volviendo a probar casos individuales
  • Validación final ejecutando todas las pruebas nuevamente

Ejemplos de interacciones con 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"
}

Contribuciones

Consulta CONTRIBUTING.md para obtener detalles sobre nuestro código de conducta y el proceso para enviar solicitudes de extracción.