🚀 TestRail Manager: Automatiza tu Gestión de Pruebas con Python
¿Cansado de gestionar manualmente tus casos de prueba en TestRail? ¿Quieres automatizar el reporte de resultados desde tus tests? TestRail Manager es la solución que necesitas.
🎯 ¿Qué es TestRail Manager?
TestRail Manager es una librería Python completa que te permite interactuar con la API de TestRail de forma simple y eficiente. Con ella puedes:
✅ Crear y gestionar proyectos, suites y casos de prueba
✅ Ejecutar test runs automáticamente
✅ Reportar resultados desde tus frameworks de testing (pytest, unittest, etc.)
✅ Generar métricas y reportes detallados
✅ Integrar TestRail en tu pipeline CI/CD
💡 ¿Por qué la creé?
Como QA Engineer, me encontraba constantemente:
- 📝 Creando casos de prueba manualmente en TestRail
- 🔄 Actualizando resultados uno por uno después de cada ejecución
- 📊 Generando reportes manualmente para los stakeholders
- 🤯 Perdiendo tiempo en tareas repetitivas
Necesitaba una forma de automatizar todo este proceso y mantener TestRail sincronizado con mis test automatizados. Así nació TestRail Manager.
🛠️ Instalación Rápida
# Clonar el repositorio
git clone https://github.com/Ankluna72/Gestion-de-pruebas-TestRail-Rosas.git
cd Gestion-de-pruebas-TestRail-Rosas
# Instalar dependencias
pip install -r requirements.txt
# Configurar credenciales
copy .env.example .env
# Edita .env con tus credenciales de TestRail
🚦 Inicio Rápido
1️⃣ Configuración Básica
from testrail_manager import TestRailManager
from config import TestRailConfig
# Inicializar el manager
manager = TestRailManager(
base_url="https://tu-empresa.testrail.io",
username="tu-email@ejemplo.com",
api_key="tu-api-key"
)
2️⃣ Crear un Caso de Prueba
# Crear un caso de prueba con pasos detallados
case = manager.create_case(
section_id=1,
title="Login exitoso con credenciales válidas",
type_id=TestRailConfig.TYPE_FUNCTIONAL,
priority_id=TestRailConfig.PRIORITY_HIGH,
custom_steps=[
{
'content': '1. Abrir página de login',
'expected': 'Se muestra formulario de login'
},
{
'content': '2. Ingresar credenciales válidas',
'expected': 'Las credenciales son aceptadas'
},
{
'content': '3. Hacer clic en "Iniciar sesión"',
'expected': 'Usuario es redirigido al dashboard'
}
],
estimate='2m'
)
print(f"✓ Caso creado con ID: {case['id']}")
3️⃣ Ejecutar un Test Run
from datetime import datetime
# Crear test run
run = manager.create_run(
project_id=1,
suite_id=1,
name=f"Test Run - {datetime.now().strftime('%Y-%m-%d %H:%M')}",
description="Ejecución automatizada",
include_all=True
)
print(f"✓ Test Run creado: {run['id']}")
4️⃣ Reportar Resultados
# Reportar resultado exitoso
result = manager.add_result_for_case(
run_id=run['id'],
case_id=case['id'],
status_id=TestRailConfig.STATUS_PASSED,
comment="✓ Prueba ejecutada exitosamente",
elapsed="2m 30s",
version="v1.2.3"
)
print("✓ Resultado reportado")
5️⃣ Generar Métricas
# Obtener estadísticas del run
stats = manager.get_run_statistics(run_id=run['id'])
print(f"Total de pruebas: {stats['total_tests']}")
print(f"✓ Pasadas: {stats['passed']}")
print(f"✗ Fallidas: {stats['failed']}")
print(f"Tasa de éxito: {stats['pass_rate']:.2f}%")
🔥 Caso de Uso Real: Integración con pytest
Una de las funcionalidades más potentes es la integración con pytest para reportar automáticamente los resultados a TestRail.
import pytest
from testrail_manager import TestRailManager
from config import TestRailConfig
# Configurar TestRail
testrail = TestRailManager(
base_url=TestRailConfig.BASE_URL,
username=TestRailConfig.USERNAME,
api_key=TestRailConfig.API_KEY
)
class TestLogin:
def test_login_exitoso(self):
# Tu lógica de test
resultado = perform_login("user@test.com", "password123")
# Reportar a TestRail automáticamente
testrail.add_result_for_case(
run_id=123,
case_id=456,
status_id=1 if resultado else 5,
comment="Test ejecutado desde pytest",
elapsed="500ms"
)
assert resultado == True
📊 Ejemplo Completo: Pipeline de Testing
Aquí un ejemplo de cómo usar TestRail Manager en un pipeline completo:
from testrail_manager import TestRailManager
from config import TestRailConfig
import time
# 1. Inicializar
manager = TestRailManager(
base_url=TestRailConfig.BASE_URL,
username=TestRailConfig.USERNAME,
api_key=TestRailConfig.API_KEY
)
# 2. Crear test run
run = manager.create_run(
project_id=1,
suite_id=1,
name="Regression Suite - Nightly",
description="Ejecución nocturna automática"
)
# 3. Obtener tests
tests = manager.get_tests(run['id'])
# 4. Ejecutar y reportar
for test in tests:
start_time = time.time()
try:
# Ejecutar tu test aquí
result = execute_test(test['case_id'])
# Reportar éxito
manager.add_result(
test_id=test['id'],
status_id=TestRailConfig.STATUS_PASSED,
comment=f"✓ Test pasó correctamente",
elapsed=f"{int(time.time() - start_time)}s"
)
except Exception as e:
# Reportar fallo
manager.add_result(
test_id=test['id'],
status_id=TestRailConfig.STATUS_FAILED,
comment=f"✗ Error: {str(e)}",
elapsed=f"{int(time.time() - start_time)}s"
)
# 5. Generar reporte
stats = manager.get_run_statistics(run['id'])
manager.generate_run_report(run['id'], 'report.txt')
# 6. Cerrar run
manager.close_run(run['id'])
print(f"✅ Pipeline completado - Tasa de éxito: {stats['pass_rate']:.2f}%")
🎁 Características Destacadas
🔧 API Completa
La librería cubre prácticamente toda la API de TestRail:
- Proyectos: Crear, listar, obtener detalles
- Suites: Organizar casos en suites de prueba
- Secciones: Estructurar casos en secciones
- Casos: CRUD completo con campos personalizados
- Test Runs: Gestión completa de ejecuciones
- Resultados: Reporte individual o en lote
- Métricas: Estadísticas y reportes automáticos
🛡️ Manejo Robusto de Errores
try:
case = manager.create_case(
section_id=999999, # ID inexistente
title="Test Case"
)
except Exception as e:
print(f"Error: {e}")
# Salida: Error en la petición a TestRail: 404 Not Found
📦 Ejemplos Incluidos
El repositorio incluye 4 ejemplos prácticos listos para usar:
-
example_basic.py- Operaciones fundamentales -
example_create_test_run.py- Crear y ejecutar test runs -
example_manage_cases.py- Gestión de casos de prueba -
example_integration_pytest.py- Integración con pytest
🏗️ Arquitectura del Proyecto
testrail-manager/
│
├── testrail_manager.py # Clase principal
├── config.py # Configuración
├── requirements.txt # Dependencias
├── .env.example # Plantilla de credenciales
│
├── examples/ # Ejemplos prácticos
│ ├── example_basic.py
│ ├── example_create_test_run.py
│ ├── example_manage_cases.py
│ └── example_integration_pytest.py
│
└── README.md # Documentación completa
🔐 Seguridad
La herramienta sigue las mejores prácticas de seguridad:
✅ Credenciales en variables de entorno (nunca en el código)
✅ .gitignore configurado para evitar exposición
✅ Manejo seguro de API Keys
✅ Validación de configuración antes de ejecutar
# Configuración segura con .env
TESTRAIL_URL=https://tu-empresa.testrail.io
TESTRAIL_USERNAME=tu-email@ejemplo.com
TESTRAIL_API_KEY=tu-api-key
📈 Métricas y Reportes
Genera reportes detallados automáticamente:
# Obtener estadísticas
stats = manager.get_run_statistics(run_id=123)
# Generar reporte
report = manager.generate_run_report(
run_id=123,
output_file='test_report.txt'
)
Salida del reporte:
============================================================
REPORTE DE TEST RUN - Regression Suite
============================================================
Run ID: 123
Fecha: 2025-11-20 10:30:00
RESUMEN DE PRUEBAS:
============================================================
Total de pruebas: 50
Pasadas: 45 (90.00%)
Fallidas: 3
Bloqueadas: 1
Para re-probar: 0
Sin probar: 1
🚀 Casos de Uso
1. CI/CD Integration
# GitHub Actions ejemplo
name: Run Tests and Report to TestRail
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run tests
run: pytest
- name: Report to TestRail
run: python report_to_testrail.py
env:
TESTRAIL_URL: ${{ secrets.TESTRAIL_URL }}
TESTRAIL_USERNAME: ${{ secrets.TESTRAIL_USERNAME }}
TESTRAIL_API_KEY: ${{ secrets.TESTRAIL_API_KEY }}
2. Selenium Integration
from selenium import webdriver
from testrail_manager import TestRailManager
driver = webdriver.Chrome()
manager = TestRailManager(...)
try:
driver.get("https://app.com/login")
# ... tu test ...
manager.add_result_for_case(
run_id=123,
case_id=456,
status_id=1,
comment="✓ Selenium test passed"
)
finally:
driver.quit()
3. Scheduled Reports
# Script para generar reportes diarios
from datetime import datetime
from testrail_manager import TestRailManager
manager = TestRailManager(...)
# Obtener runs activos
runs = manager.get_runs(project_id=1)
for run in runs:
if run.get('is_completed') == False:
stats = manager.get_run_statistics(run['id'])
# Enviar por email, Slack, etc.
send_notification(
f"Run: {run['name']}\n"
f"Progress: {stats['pass_rate']:.2f}%"
)
📚 Recursos Adicionales
🔗 Enlaces Útiles
- 📦 Repositorio: GitHub - TestRail Manager
- 📖 Documentación Completa: Ver README.md en el repo
- 🐛 Reportar Issues: GitHub Issues
- 📘 TestRail API Docs: Documentación oficial
💻 Requisitos
- Python 3.7+
- TestRail (cuenta con acceso a API)
-
requests>= 2.25.0 -
python-dotenv>= 0.19.0
🎯 Próximos Pasos
Estoy trabajando en nuevas características:
- [ ] Soporte para attachments en resultados
- [ ] CLI tool para operaciones comunes
- [ ] Dashboard web para visualizar métricas
- [ ] Exportación a PDF/Excel
- [ ] Webhooks para notificaciones en tiempo real
🤝 Contribuciones
¡Las contribuciones son bienvenidas! Si tienes ideas o encuentras bugs:
- 🍴 Fork el repositorio
- 🔨 Crea tu feature branch
- ✅ Haz commit de tus cambios
- 🚀 Push a la rama
- 📬 Abre un Pull Request
💬 Feedback
¿Qué te parece la herramienta? ¿La usarías en tus proyectos? Déjame tus comentarios abajo 👇
Si te resultó útil:
- ⭐ Dale una estrella en GitHub
- 🔄 Compártelo con tu equipo
- 💬 Déjame saber cómo la estás usando
📞 Contacto
- GitHub: @Ankluna72
- Proyecto: TestRail Manager
🎬 Conclusión
TestRail Manager es una herramienta completa que te permite:
✅ Ahorrar tiempo automatizando tareas repetitivas
✅ Mejorar la calidad con mejor trazabilidad
✅ Integrar TestRail en tu pipeline de CI/CD
✅ Generar reportes automáticos y detallados
¿Listo para automatizar tu gestión de pruebas? 🚀
👉 Prueba TestRail Manager ahora
Tags: #testing #python #automation #testrail #qa #devops #cicd #pytest #selenium
Desarrollado con ❤️ para la comunidad de QA
Top comments (0)