En la primera parte del artículo Karate, hablamos de qué es y por qué utilizarlo. Ahora lo haremos sobre el conjunto de buenas prácticas que existen respecto al uso de Karate.
Dado que es necesario tener presente las métricas establecidas por el cliente, presentamos las siguientes recomendaciones:
1: Encarpetado: Para establecer un orden en el proyecto, éste se puede tener dividido en carpetas por funcionalidad o lambda y en su contenido lo que se necesita para que esa funcionalidad se pueda ejecutar; por ejemplo:
resource > [funcionalidad_ejemplo] > data
resource > [funcionalidad_ejemplo] > features
resource > [funcionalidad_ejemplo] > jsonfiles
resource > [funcionalidad_ejemplo] > xmlfiles
Teniendo en cuenta lo anterior, ese nombre y ese encarpetado estaría contemplado para todo el esqueleto del proyecto. Todo se debe hacer sobre la carpeta src/test/resources.
Para crear un directorio en el editor de Eclipse IDE lo hacemos de la siguiente manera:
2: Nombre de las clases JAVA: Nombres claros y cortos reflejando la acción a realizar y una sintaxis de la siguiente manera: ServicioEjemplo o en el caso de tener una clase JAVA runner lo podemos hacer de la siguiente manera: ServicioEjemploRunner. (Haciendo énfasis de nombramiento en PascalCase)
Por cada funcionalidad se recomienda crear su correspondiente clase runner.
Para crear un archivo JAVA en el editor Eclipse IDE lo hacemos de la siguiente manera:
Nota: solo usamos estas clases para definir los runners
3: Nombres de los Features: nombres claros y cortos reflejando la acción a realizar y una sintaxis de la siguiente manera: servicio_ejemplo.feature.
Para crear un archivo feature en el editor Eclipse IDE lo hacemos de la siguiente manera:
4: Variables: nombres cortos, claros y sintaxis de la siguiente manera:
ejemploVariable, debemos tener en cuenta que, dentro del proyecto se nos pueden presentar nombres largos de variables, pero sí debemos tener en cuenta el significado de creación de la variable. Estos nombres de las variables también deben ser camelCase.
Nota: Para crear una variable en karate, utilizamos la palabra reservada *def.
5: Tipos de datos
6:Karate-config: Este archivo se agrega en todo el resource del proyecto, en este archivo se agrega todo lo que son variables contenedoras, funciones genéricas, environments.
También se suele agregar configuraciones genéricas que se le agregarán a todos los servicios:
karate.configure("ssl", true) karate.configure('logPrettyResponse', true) karate.configure('logPrettyRequest', true) karate.configure('connectTimeout', 6000) karate.configure('readTimeout', 20000) |
7: Cucumber:
Anteriormente, se habló para crear un archivo feature dentro de la carpeta de la funcionalidad, también se agrega otro archivo tipo feature llamado lambda.feature.
Dentro de este archivo se agrega todo lo que es genérico de la funcionalidad como: Variables, invocaciones de archivos, funciones, backgrounds y consumo del servicio con funciones de karate.
Luego de tener todo lo anterior nos devolvemos al archivo del servicio y poner el consumo de la funcionalidad.
El archivo java del runner pone las correspondientes configuraciones para la ejecución directamente apuntando al archivo lambda.feature de la funcionalidad.
package runners; import com.intuit.karate.KarateOptions; import com.intuit.karate.junit4.Karate; import org.junit.runner.RunWith; @RunWith(Karate.class) @KarateOptions( features = "src/test/resources/funcionalida_ejemplo/lambda.feature", tags = {} ) public class ContentRunner { } |
Después de realizar los anteriores pasos podemos empezar a automatizar los servicios y funcionalidades de nuestro arquetipo recién creado.