Underc0de

Informática => QA (Quality Assurance) => Mensaje iniciado por: ANTRAX en Marzo 22, 2022, 04:09:43 PM

Título: Corriendo colecciones de APIs con Newman y reporte en HTML
Publicado por: ANTRAX en Marzo 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:

Código (javascript) [Seleccionar]
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í:

Código (javascript) [Seleccionar]
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:

Código (text) [Seleccionar]
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:

Código (text) [Seleccionar]
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:

Código (text) [Seleccionar]
npm install -g newman-reporter-htmlextra

Y luego corremos la colección de la siguiente manera:

Código (text) [Seleccionar]
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
Título: Re: Corriendo colecciones de APIs con Newman y reporte en HTML
Publicado por: Chojun en Marzo 22, 2022, 04:12:34 PM
 ;D ;D Excelente aporte!!! muchas gracias!!!
Título: Re: Corriendo colecciones de APIs con Newman y reporte en HTML
Publicado por: Humbucker en Marzo 22, 2022, 04:21:14 PM
gracias por la data!!! 8) 8) 8)
Título: Re: Corriendo colecciones de APIs con Newman y reporte en HTML
Publicado por: LuisRomanoAbdala en Marzo 22, 2022, 04:34:49 PM
Excelente!!! Muchas gracias por el Aporte  :) :)
Título: Re: Corriendo colecciones de APIs con Newman y reporte en HTML
Publicado por: danvidel en Marzo 22, 2022, 04:39:28 PM
Excelente aporte 
Título: Re: Corriendo colecciones de APIs con Newman y reporte en HTML
Publicado por: marina.carrizo en Marzo 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.
Título: Re: Corriendo colecciones de APIs con Newman y reporte en HTML
Publicado por: ANTRAX en Marzo 22, 2022, 05:43:55 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
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:

Código (text) [Seleccionar]
stage("Postman API Testing") {
          sh " newman run 'coleccion.json' -e entorno.json;"
        }


Saludos,
ANTRAX
Título: Re: Corriendo colecciones de APIs con Newman y reporte en HTML
Publicado por: Vikingo en Octubre 20, 2022, 09:59:54 PM
Muchas gracias por el aporte, me re sirvió para el curso que estoy haciendo.
Título: Re: Corriendo colecciones de APIs con Newman y reporte en HTML
Publicado por: ktaagus en Octubre 20, 2022, 10:03:09 PM
 :) Muy buen aporte, explicación conscisa, me sirvió para el curso
Título: Re: Corriendo colecciones de APIs con Newman y reporte en HTML
Publicado por: Guaditaxs en Octubre 20, 2022, 10:04:34 PM
Muy buen aporte!!! :D 8)
Título: Re:Corriendo colecciones de APIs con Newman y reporte en HTML
Publicado por: Apache90 en Agosto 14, 2023, 08:39:45 PM
excelente +10 y reco
Título: Re:Corriendo colecciones de APIs con Newman y reporte en HTML
Publicado por: fullstackmendoza en Agosto 24, 2023, 06:22:22 PM
Excelente, buen aporte!!!