//SOLVEME_

Herramientas para desarrolladores / Testing · 2022

pycamel

Un framework basado en pytest para pruebas automatizadas de API

Publicado: · Actualizado:

PythonpytestAPI Testing
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