Pruebas Automatizadas con pm.test() y Aserciones Chai
Aprende a escribir pruebas automatizadas en JavaScript usando la librería de aserciones Chai integrada en Postman para validar códigos HTTP, tiempos de respuesta y payloads JSON.
¿Cómo Funciona el Testing Automatizado en Postman?
La pestaña Scripts ➔ Post-response (conocida históricamente como Tests) permite escribir código en JavaScript que se ejecuta de forma automática inmediatamente después de recibir la respuesta del servidor.
En lugar de inspeccionar manualmente cada respuesta con los ojos, defines aserciones que verifican si el servidor cumple con el contrato acordado. Si una condición no se cumple, la prueba falla en rojo de inmediato.
pm.expect(valor).to.be.a('string') o pm.response.to.have.status(200).
Estructura Básica de una Prueba con `pm.test()`
Toda prueba se declara envolviendo las aserciones dentro de la función pm.test("nombre descriptivo", callback):
| Objetivo de Validación | Sintaxis de Aserción Recomendada |
|---|---|
| Código HTTP 200 OK | pm.response.to.have.status(200); |
| Código dentro de un grupo | pm.response.to.be.success; (rango 2xx) |
| Tiempo de respuesta (SLA) | pm.expect(pm.response.responseTime).to.be.below(500); |
| Presencia de Cabecera | pm.response.to.have.header("Content-Type"); |
| Tipo de dato en JSON | pm.expect(jsonData.id).to.be.a("number"); |
| Longitud de un Array | pm.expect(jsonData.data).to.be.an("array").that.is.not.empty; |
Visualización en la Pestaña "Test Results"
Al pulsar Send, la zona inferior de respuesta añade una pestaña llamada Test Results (X/Y):
- PASS (Verde): Todas las aserciones dentro de la prueba fueron exitosas.
- FAIL (Rojo): Al menos una aserción falló; Postman muestra el error exacto (por ejemplo: AssertionError: expected 404 to equal 200).
⚡ Suite de Pruebas Completa en JavaScript para un Endpoint REST
Copia este bloque en la pestaña Tests de cualquier petición GET o POST:
// 1. Validar que el código HTTP sea 200 OK
pm.test("Status code es 200 OK", function () {
pm.response.to.have.status(200);
});
// 2. Validar que la respuesta sea JSON válido
pm.test("Cabecera Content-Type es application/json", function () {
pm.response.to.have.header("Content-Type");
pm.expect(pm.response.headers.get("Content-Type")).to.include("application/json");
});
// 3. Validar el tiempo de latencia (menos de 400 milisegundos)
pm.test("Tiempo de respuesta dentro del SLA (< 400ms)", function () {
pm.expect(pm.response.responseTime).to.be.below(400);
});
// 4. Parsear el cuerpo de la respuesta y validar estructura de datos
const jsonData = pm.response.json();
pm.test("Estructura y tipos de datos del usuario son correctos", function () {
// Validar propiedades principales
pm.expect(jsonData).to.be.an("object");
pm.expect(jsonData).to.have.property("id");
pm.expect(jsonData.id).to.be.a("number");
pm.expect(jsonData).to.have.property("email");
pm.expect(jsonData.email).to.include("@");
pm.expect(jsonData.activo).to.be.true;
});
// 5. Validar que una lista de roles contenga al menos un elemento
pm.test("El usuario posee roles asignados", function () {
pm.expect(jsonData.roles).to.be.an("array").that.is.not.empty;
pm.expect(jsonData.roles).to.include("estudiante");
});
Mini-Quiz de Retención
Comprueba tu comprensión antes de pasar a la siguiente lección¿Qué librería de aserciones viene integrada en Postman para escribir pruebas legibles con pm.expect()?
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.🚀 ¿Quieres dominar Manual de Postman: Pruebas de APIs REST & Automatización y crear proyectos reales?
Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.
🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.