Recientemente he hablado acerca de un framework de testing llamado Cypress. Pues bien, hoy os traigo otro: un framework de testing sencillo pero muy eficaz para API Automation llamado Karate. Para describirlo de la forma más precisa posible, aquí tenéis un fragmento de la fuente oficial:
Karate Framework es la única herramienta de código abierto que combina API test-automation, mocks y testeo de rendimiento en un solo framework. La sintaxis BDD popularizada por Cucumber es language-neutral, y fácil incluso para los no-programadores. Además de potentes aserciones JSON & XML, puedes ejecutar tests en paralelo para mejorar la velocidad – elemento crítico para testeos HTTP API.
Primero, comparemos Karate con Cucumber y REST-Assured.
Karate:
Cucumber: + debemos implementar pasos y POJO:
Rest-assured:
Ventajas de Karate: BDD unificado (comparado con Cucumber + pasos + lógica de negocio + POJOs). Si necesitas complejidad, Karate ofrece soporte para Javascript.
Para las precondiciones, Karate propone usar otras feature files:
Y ya que Karate está escrito en Java, ofrece integración con éste lenguaje.
Ejemplo de llamada a un método Java desde el testeo API, por ejemplo generar una uniqueId:
Otra ventaja de usar Karate es sus capacidades asertivas:
Validación Schema. Formato amigable de validación de respuestas. Reutilizar Json como variable. Karate markers. DDT. Similar a Cucumber, pero en comparación con este, donde las variables están estáticas en la tabla, con Karate podemos importar un archivo csv con información.
Ejecución en paralelo con Junit5. En este ejemplo ejecutamos todos los tests/feature files con la etiqueta @regression.
Reporte. Allure, Cucumber report. Karate propone un test como este:
Pero también se puede integrar fácilmente reports de Cucumber o Allure 😉
En caso de usar un report de Cucumber obtendremos algo tal que:
Otras características del Karate Framework: Json Path, debug UI paso a paso, Integración con CI, Build-in ENV switcher, etc.
Resumiendo: Pros y Contras de usar Karate Framework:
pros | contras |
Integración con java, JS | No ‘find usage’, auto renombrar |
Json, xml native support | TestNG support deprecated |
Capacidades asertivas potentes | No tiene Auth Schemes out of the box |
Ejecución en paralelo | |
No se requiere saber programar |