Mi primer proyecto en Karate Framework

Miguel Octavo Alvarez Ojeda
Pragma
Published in
6 min readMay 10, 2024

Antes de iniciar, es bueno saber que es Karate Framework. Karate Framework es una herramienta de código abierto escrita en java por Peter Thomas.

La metodología de Karate sigue el estilo de redacción de programas de Cucumber y se alinea con la filosofía de Desarrollo Basado en Comportamiento (BDD). Su sintaxis es fácil de entender, incluso para aquellos que no tienen experiencia en programación. Lo destacado de este framework es su capacidad única para combinar la automatización de pruebas de API y pruebas de rendimiento en una única plataforma independiente.

Karate ofrece a los usuarios la posibilidad de ejecutar casos de prueba de manera simultánea y realizar verificaciones en formatos tanto JSON como XML. Esto convierte a Karate en una solución completa y versátil para evaluar el rendimiento y la funcionalidad de las API.

Pre-requisitos

  • Java 8+
  • Maven o Gradle
  • Eclipse O Intellij IDE

Una vez ya configurado nuestro entorno local, procedemos a crear un nuevo proyecto en Intellij IDE, en el cual es cogeremos Maven Archetype y JDK el java instaldo previamente en nuestro computador.

Ahora debemos configurar el arquetipo el cual seria de la siguiente manera

com.intuit.karate
karate-archetype
1.0.0

Luego de esto se comienza a crear un build del arquetipo antes agregado, si todo es correcto debería tener una ventana como esta. En el archivo pom.xml se agregan todas las dependencias que necesitemos, para este proyecto con las que ya trae el proyecto por defecto es suficiente

También se crea esta estructura en el proyecto

Antes que todo debemos configurar nuestro archivo karate-config.js, este archivo trae una configuración inicial que podemos usar en este caso, este archivo nos permite configurar diferentes rutas del servicio a probar en cuestión, esto es practico para configurar diferentes ambientes dev, qa y prod.

En nuestro caso como es un proyecto de prueba solo configuraremos una ruta, que es la ruta de un api de prueba, en la cual se pueden realizar registro de usuarios e inicios de sesión de los mismos

Para que nuestro proyecto sea entendible y organizado vamos a ordenar las carpetas según la funcionalidad que estaremos probando, primero nombraremos la carpeta “user” como “demoblaze’ y dentro de esta crearemos la carpeta “login”, quedando tal que así

Para entender que vamos hacer a continuación debemos conocer la estructura del body que debemos enviar al api a probar, para este caso el body es el siguiente

ya conociendo el body vamos a crear un archivo dentro de la carpeta de “login” con el nombre “bodyDemoBlaze.json” el cual sera de la siguiente manera

Donde en cada valor que es de tipo String hemos puesto “%S” indicando que el valor debe ser tipo string, aunque realmente podemos poner los valores que vamos a usar pero seria una mala practica, ahora vamos a crear nuestro archivo feature, el cual contendrá nuestros escenarios de prueba, como ya tenemos un archivo feature llamado “user.feature” lo renombraremos como “loginTest.feature” seguido esto vamos a configurar las variables que usaremos en nuestro feature

En la línea 4 estamos definiendo la urlBase, la cual configuramos en nuestro archivo de karate-config.js “config.urlBase = ‘https://api.demoblaze.com/'” esto lo hacemos para luego usar la ruta en los escenarios.

En la línea 5 estamos definiendo la estructura del body que estaremos usando para los escenarios

En la línea 6 hasta la 13 definimos una función que a su vez tiene una función en javascript que nos genera un string de 7 caracteres, esto se usa para que cada vez que necesitemos un string diferente usemos la función podamos tener ese string sin modificar las pruebas.

En el primer escenario probaremos el registro de un usuario.

Esta es la estructura de un escenario con karate framework, donde en el Given (dado) línea 15, estamos agregándole a la urlBase el “signup” puesto que dependiendo del escenario debemos probar distintas rutas, lo que se hace ahí es tomar https://api.demoblaze.com/ y agregar “signup” quedando “https://api.demoblaze.com/ signup”

And set bodyDemoBlaze.username = getStringRandom()

And set bodyDemoBlaze.password = getStringRandom()

En las lineas 16 y 17 estamos dándole valores a username y password en la variable bodyDemoBlaze que a su vez usa el archivo bodyDemoBlaze.json que habíamos configurado con anterioridad, en este caso estamos usando la función getStringRandom()

* print “Se envía la petición”

* print bodyDemoBlaze

Para temas de validación podemos usar las líneas 18 y 19, donde en la primera se imprime en el log el mensaje “Se envía la petición” y seguido se muestra el body que hemos construido y enviaremos al api.

And request bodyDemoBlaze

En la linea 20 se hace el request con el body antes construido, acto seguido indicamos el metodo a usar, que en este caso el el método post

When method post

Por ultimo hacemos la aserción donde validaremos que hemos obtenido el resultado esperado, en este caso como el api no responde un mensaje de confirmación usamos Then status 200, pero en dado caso el api nos respondiera un mensaje también podríamos agregar una aserción más, para el caso de un mensaje podríamos usar And match response == { “Registro Exitoso” }

Para correr la prueba basta con estar en feature y en titulo del escenario darle run, y se nos mostrara en el log algo como esto, también nos dará al final del log el reporte

Reporte:

Ya para concluir crearemos un archivo que correrá todos los escenarios que estén en el feature

Con este runner se correrán todos los escenarios y nos generara el informe con todos los escenarios

Reporte de todos los escenarios

Código Fuente: git clone https://Linxus3220@bitbucket.org/Linxus3220/demoblazemanual.git

--

--