Corriendo colecciones de APIs con Newman y reporte en HTML

Iniciado por ANTRAX, Marzo 22, 2022, 04:09:43 PM

Tema anterior - Siguiente tema

Antraxlele y 2 Visitantes están viendo este tema.


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:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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


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

Código: javascript
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: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


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
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);
});



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.


Newman

Para poder utilizar Newman, es necesario tener instalado NodeJS. A este lo podemos descargar desde su página oficial: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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

Código: text
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
newman run "nombre_coleccion.json"



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
npm install -g newman-reporter-htmlextra


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

Código: text
newman run collection.json -r htmlextra


Esto nos generará un archivo HTML con el reporte


Esto es todo por ahora! Espero que les sea de utilidad!
ANTRAX


 ;D ;D Excelente aporte!!! muchas gracias!!!
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta



Excelente aporte 
Daniel Videla
Porfolio FullStack
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.

Marzo 22, 2022, 05:43:55 PM #6 Ultima modificación: Marzo 22, 2022, 06:10:02 PM por ANTRAX
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
stage("Postman API Testing") {
          sh " newman run 'coleccion.json' -e entorno.json;"
        }


Saludos,
ANTRAX


Muchas gracias por el aporte, me re sirvió para el curso que estoy haciendo.

 :) Muy buen aporte, explicación conscisa, me sirvió para el curso