This site uses cookies own and third. If you continue to browse consider to accept the use of cookies. OK More Info.

Corriendo colecciones de APIs con Newman y reporte en HTML

  • 6 Replies
  • 1471 Views

0 Members and 4 Guests are viewing this topic.

Online ANTRAX

  • *
  • Administrator
  • Posts: 5839
  • Actividad:
    36.67%
  • Country: ar
  • Reputación 43
  • ANTRAX
  • Twitter: @Underc0de
    • View Profile
    • Underc0de
    • Email

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:

You are not allowed to view links. Register or Login

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:

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: You are not allowed to view links. Register or Login


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


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: You are not allowed to view links. Register or Login

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”

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


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


Offline Chojun

  • *
  • Underc0der
  • Posts: 6
  • Actividad:
    0%
  • Country: 00
  • Reputación 1
  • Mendokusai
    • View Profile
 ;D ;D Excelente aporte!!! muchas gracias!!!
You are not allowed to view links. Register or Login

Offline Humbucker

  • *
  • Underc0der
  • Posts: 2
  • Actividad:
    0%
  • Reputación 0
    • View Profile
    • Email
gracias por la data!!! 8) 8) 8)

Offline LuisRomanoAbdala

  • *
  • Underc0der
  • Posts: 2
  • Actividad:
    0%
  • Reputación 0
    • View Profile
    • Email
Excelente!!! Muchas gracias por el Aporte  :) :)

Offline danvidel

  • *
  • Underc0der
  • Posts: 1
  • Actividad:
    0%
  • Country: 00
  • Reputación 0
  • Daniel Videla
    • View Profile
    • Porfolio FullStack
    • Email
Excelente aporte 
Daniel Videla
Porfolio FullStack
You are not allowed to view links. Register or Login

Offline marina.carrizo

  • *
  • Underc0der
  • Posts: 4
  • Actividad:
    0%
  • Country: 00
  • Reputación 0
    • View Profile
Muy buen aporte!!! Gracias!
Al proximo post  podriamos agregarle como integro newman con Jenkins para correrlo desde un job.

Online ANTRAX

  • *
  • Administrator
  • Posts: 5839
  • Actividad:
    36.67%
  • Country: ar
  • Reputación 43
  • ANTRAX
  • Twitter: @Underc0de
    • View Profile
    • Underc0de
    • Email
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
« Last Edit: March 22, 2022, 06:10:02 pm by ANTRAX »