Realizando tests con datos de un archivo (Serie Postman - Parte 5)
Ariel Alvarado | Julio 23, 2020
En el post anterior de Postman aprendimos a realizar tests. Ahora, vamos a leer datos de un archivo para utilizarlos en nuestros tests.
Primero crearemos una nueva variable de entorno (si no sabes como hacerlo, lee el post anterior) con el nombre Variable (si lo se, que imaginativo...), a esta variable cargaremos los valores leidos de nuestro archivo.
Primero cambiaremos uno de los parámetros (par1) para que utilice la variable que creamos recientemente (puedes leer toda la serie de Postman si no sabes como realizar alguno de estos pasos).
Ahora, en el tab Pre-request Script agregaremos el código para cargar valores del archivo de tests a nuestra variable de entorno.
// verificamos si el valor es distinto de undefined ya que cuando hacemos correr el request normalmente no se tendrá el valor leido del archivo
if (pm.iterationData.get("valor") !== undefined) {
// postman.setEnvironmentVariable se utiliza para establecer un valor a una variable de entorno
// pm.iterationData.get nos sirve para obtener valores de una iteración
postman.setEnvironmentVariable('Variable', pm.iterationData.get("valor"));
}
El archivo que cargaremos (extensión js) tiene la siguiente estructura:
[
{
"valor": "valor1",
"otro": "este valor no se utilizará, solo para ver que se puede usar lo que se quiera"
},
{
"valor": "valor2"
},
{
"valor": "valor3"
}
]
Para cargar un archivo en Collection Runner debemos seguir los siguientes pasos:
- Presionar Select File y seleccionar nuestro archivo de datos.
- Seleccionar el tipo de archivo en Data File Type. En nuestro caso es application/json.
- Opcionalmente se puede ver una vista preliminar del archivo presionando Preview.
- Insertar el número de iteraciones en iterations (3 en nuestro caso ya que el archivo es un array de tres elementos)
- Corremos la colección.
Oh no, podemos ver errores en nuestros tests. La causa es que uno de los valores cambia en cada iteración en base al valor leido de nuestro archivo.
El test que esta fallando es:
pm.test("Cuerpo de la respuesta es correcto 2", () => {
const respuestaEnFormatoJson = pm.response.json();
pm.expect(respuestaEnFormatoJson.args).to.have.property("par1");
pm.expect(respuestaEnFormatoJson.args.par1).to.equal("valor1");
pm.expect(respuestaEnFormatoJson.args).to.have.property("par2");
pm.expect(respuestaEnFormatoJson.args.par2).to.equal("postman-echo.com");
});
El problema es obvio, estamos comparando la respuesta y esperamos que par1 sea igual a valor1. Esto es correcto en la primera iteración (como podemos ver en el archivo de datos) pero incorrecto en las demás iteraciones. Entonces, corregiremos el test leyendo el valor de la iteración actual (con pm.iterationData.get("valor")):
pm.test("Cuerpo de la respuesta es correcto 2", () => {
const respuestaEnFormatoJson = pm.response.json();
pm.expect(respuestaEnFormatoJson.args).to.have.property("par1");
pm.expect(respuestaEnFormatoJson.args.par1).to.equal(pm.iterationData.get("valor"));
pm.expect(respuestaEnFormatoJson.args).to.have.property("par2");
pm.expect(respuestaEnFormatoJson.args.par2).to.equal("postman-echo.com");
});
Corremos nuevamente los tests y listo, todos estarán corregidos.
Y eso es todo por ahora, keep coding!!!