Herramientas para desarrolladores / Testing · 2022
pycamel
Un framework basado en pytest para pruebas automatizadas de API
Publicado: · Actualizado:
- Rol
- Desarrollo en solitario del framework de automatización de pruebas
- Stack
- Python, pytest, Pylint, Coverage, codecov
- Año
- 2022
pycamel es un framework de automatización centrado en cubrir servicios API con pruebas, integrándose sin fricción con pytest. Ofrece a los equipos una forma estructurada de escribir pruebas de API, especialmente útil en arquitecturas de microservicios.
El reto
Cuando un equipo trabaja con varios servicios y versiones de API a la vez, los scripts de pytest dispersos y ad hoc se convierten rápidamente en un caos, sin estructura común ni componentes reutilizables.
La solución
- ▸CamelConfig — configuración con una URL base del servicio
- ▸RouterMaker — construcción de rutas para distintos endpoints de API
- ▸Pruebas parametrizadas mediante pytest.mark.parametrize
- ▸Funciones de ayuda para validar respuestas, incluyendo assert_status_code
- ▸Soporte de filtros de solicitud y fácil extensión para arquitecturas multiservicio
Cómo funciona
Un proyecto declara su host base una sola vez con CamelConfig en tests/conftest.py. Después, cada servicio recibe su propio RouterMaker con un prefijo de ruta como /data-service/v1, y cada endpoint se convierte en un router reutilizable expuesto como fixture de pytest. Las pruebas llaman a router.get() o post() y validan la respuesta, así que el código de las pruebas refleja la estructura de la propia API.
- ▸Cabeceras por defecto para cada router (Content-Type: application/json de serie), además de set_headers y append_header, que solo se aplican a la siguiente petición
- ▸Parámetros de consulta y filtros con set_filters() para paginación y búsqueda
- ▸Validación de respuestas con esquemas de pydantic v2
- ▸Router makers separados por versión de la API (v1, v2) para servicios que evolucionan en paralelo
Mantenimiento
pycamel está publicado en PyPI desde 2022 y sigue mantenido: la versión mayor actual está pensada para Python 3.10+ y pydantic v2, las pruebas unitarias se ejecutan en GitHub Actions y la cobertura se sigue en Codecov.
El resultado
El framework está orientado a la calidad del código: Pylint para análisis estático, junto con Coverage y codecov para controlar la cobertura de pruebas.
Menciones y fuentes