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

postman

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

1
2
3
4
5
6
7
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

JsonSchema

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í:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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);
});

Postman2

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.

Postman3

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:

1
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:

1
newman run “nombre_coleccion.json”

Newman

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:

1
npm install -g newman-reporter-htmlextra

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

1
newman run collection.json -r htmlextra

Esto nos generará un archivo HTML con el reporte

Newman2

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *