Underc0de

Informática => QA (Quality Assurance) => Topic started by: ANTRAX on March 22, 2022, 04:09:43 pm

Title: Corriendo colecciones de APIs con Newman y reporte en HTML
Post by: ANTRAX on March 22, 2022, 04:09:43 pm
(https://sp-ao.shortpixel.ai/client/to_webp,q_glossy,ret_img,w_622,h_350/https://antrax-labs.org/wp-content/uploads/2022/03/Newman.jpg)

En papers anteriores vimos como usar Postman, ahora veremos como podemos combinarlo con la potente herramienta de Newman para poder correr las colecciones de postman desde la consola. Además nos permite integrarlo a Jenkins o a cualquier otro tipo de integración continua y ver los resultados de las ejecuciones tanto en la consola como en un reporte en HTML.

Para esta PoC, voy a hacer rapidamente una petición GET a un endpoint y le voy a agregar 4 tests:

        Validar el código de respuesta
        Validar el mensaje de respuesta
        Validar el tiempo de respuesta
        Validar la estructura del schema

El endpoint que voy a utilizar, es el mismo que he estado utilizando a lo largo de todos los papers relacionados a APIs. Les dejo la URL del Swagger por si alguien más quiere practicar con esta API pública:

https://petstore.swagger.io/

Pasamos el endpoint a Postman y agregamos los primeros tests desde los snippets

(https://sp-ao.shortpixel.ai/client/to_webp,q_glossy,ret_img,w_850,h_420/https://antrax-labs.org/wp-content/uploads/2022/03/postman.png)

Para validar la estructura del schema y los tipos de datos que debería llevar, vamos a utilizar el siguiente test:

Code: (javascript) You are not allowed to view links. Register or Login
const schema = {

ESTRUCTURA DEL JSON

pm.test("Schema validation", () => {
pm.response.to.have.jsonSchema(schema);
});

A esa «Estructura del JSON» la obtendremos haciendo la petición al GET que estamos testeando, copiamos el resultado y lo pegamos en el siguiente conversor de Json to Schema: https://www.liquid-technologies.com/online-json-to-schema-converter

(https://sp-ao.shortpixel.ai/client/to_webp,q_glossy,ret_img,w_857,h_799/https://antrax-labs.org/wp-content/uploads/2022/03/JsonSchema.png)

Ese Json resultante, es la estructura o schema con los tipos de datos de cada elemento. Copiamos todo eso, y lo pegamos dentro del código que dejé más arriba. Y con esto ya podremos validar el Schema también. Debería quedarnos algo así:

Code: (javascript) You are not allowed to view links. Register or Login
const schema = {

  "type": "array",
  "items": [
    {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "category": {
          "type": "object",
          "properties": {
            "id": {
              "type": "integer"
            },
            "name": {
              "type": "string"
            }
          },
          "required": [
            "id",
            "name"
          ]
        },
        "name": {
          "type": "string"
        },
        "photoUrls": {
          "type": "array",
          "items": {}
        },
        "tags": {
          "type": "array",
          "items": [
            {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer"
                },
                "name": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "name"
              ]
            }
          ]
        },
        "status": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "category",
        "name",
        "photoUrls",
        "tags",
        "status"
      ]
    }
  ]
}

pm.test("Schema validation", () => {
    pm.response.to.have.jsonSchema(schema);
});

(https://sp-ao.shortpixel.ai/client/to_webp,q_glossy,ret_img,w_961,h_673/https://antrax-labs.org/wp-content/uploads/2022/03/postman2.png)

Una vez que ya tenemos todos los tests hechos, procedemos a exportar la colección. Para ello clickeamos en los 3 puntitos de la colección y damos en click en «Exportar» y lo guardamos.

(https://sp-ao.shortpixel.ai/client/to_webp,q_glossy,ret_img,w_671,h_488/https://antrax-labs.org/wp-content/uploads/2022/03/Postman3.png)

Newman

Para poder utilizar Newman, es necesario tener instalado NodeJS. A este lo podemos descargar desde su página oficial: https://nodejs.org/en/download/current/

Una vez que lo tenemos instalado, abrimos una consola y tipeamos lo siguiente para instalar Newman:

Code: (text) You are not allowed to view links. Register or Login
npm install -g newman
Ahora bien… Como dije antes, «sirve para correr colecciones de Postman desde la consola»… Es por ello, que abrimos una consola, nos situamos en el directorio en donde descargamos la colección de postman y ejecutamos lo siguiente:

Code: (text) You are not allowed to view links. Register or Login
newman run “nombre_coleccion.json”
(https://sp-ao.shortpixel.ai/client/to_webp,q_glossy,ret_img,w_972,h_988/https://antrax-labs.org/wp-content/uploads/2022/03/Newman.png)

Newman ejecutará todos los test que hayamos creado, y nos arrojará una tabla con todos los tests que pasaron y los que fallaron. Además de mostrarnos el detalle de que fue lo que falló.

Ahora bien, en caso de que necesitemos un reporte más visible para mostrarle a un cliente o lo que fuese, debemos tener instalado lo siguiente:

Code: (text) You are not allowed to view links. Register or Login
npm install -g newman-reporter-htmlextra
Y luego corremos la colección de la siguiente manera:

Code: (text) You are not allowed to view links. Register or Login
newman run collection.json -r htmlextra
Esto nos generará un archivo HTML con el reporte

(https://sp-ao.shortpixel.ai/client/to_webp,q_glossy,ret_img,w_1159,h_1129/https://antrax-labs.org/wp-content/uploads/2022/03/Newman2.png)

Esto es todo por ahora! Espero que les sea de utilidad!
ANTRAX
Title: Re: Corriendo colecciones de APIs con Newman y reporte en HTML
Post by: Chojun on March 22, 2022, 04:12:34 pm
 ;D ;D Excelente aporte!!! muchas gracias!!!
Title: Re: Corriendo colecciones de APIs con Newman y reporte en HTML
Post by: Humbucker on March 22, 2022, 04:21:14 pm
gracias por la data!!! 8) 8) 8)
Title: Re: Corriendo colecciones de APIs con Newman y reporte en HTML
Post by: LuisRomanoAbdala on March 22, 2022, 04:34:49 pm
Excelente!!! Muchas gracias por el Aporte  :) :)
Title: Re: Corriendo colecciones de APIs con Newman y reporte en HTML
Post by: danvidel on March 22, 2022, 04:39:28 pm
Excelente aporte 
Title: Re: Corriendo colecciones de APIs con Newman y reporte en HTML
Post by: marina.carrizo on March 22, 2022, 04:48:43 pm
Muy buen aporte!!! Gracias!
Al proximo post  podriamos agregarle como integro newman con Jenkins para correrlo desde un job.
Title: Re: Corriendo colecciones de APIs con Newman y reporte en HTML
Post by: ANTRAX on March 22, 2022, 05:43:55 pm
You are not allowed to view links. Register or Login
Muy buen aporte!!! Gracias!
Al proximo post  podriamos agregarle como integro newman con Jenkins para correrlo desde un job.

Para correrlo con Jenkins, tenes que definir un nuevo stage en el JenkinsFile, y desde ahí le pegas a Newman. Por ejemplo:

Code: (text) You are not allowed to view links. Register or Login
stage("Postman API Testing") {
          sh " newman run 'coleccion.json' -e entorno.json;"
        }

Saludos,
ANTRAX