Postman permite ejecutar código JavaScript antes de que una petición se envíe o después de recibir la respuesta. Esto abre un mundo de posibilidades para la automatización y la creación de flujos de trabajo dinámicos. Los scripts se dividen en dos tipos:
Ambos tipos de scripts utilizan el objeto global pm
, que proporciona acceso a la información de la petición/respuesta y a las variables.
El test más fundamental es comprobar que la petición fue exitosa. Un código de estado 200 OK
es el indicador más común.
GET
a https://jsonplaceholder.typicode.com/posts/1
.pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
Además del código de estado, es crucial verificar que el cuerpo de la respuesta contenga los datos correctos y con la estructura adecuada.
userId
.pm.expect
para realizar aserciones sobre el contenido.pm.test("El userId debe ser 1", function () {
// 1. Parsear el cuerpo de la respuesta a JSON
const responseData = pm.response.json();
// 2. Realizar la aserción
pm.expect(responseData.userId).to.eql(1);
});
pm.test("El título no debe estar vacío y debe ser un string", function () {
const responseData = pm.response.json();
pm.expect(responseData.title).to.be.a('string').and.to.not.be.empty;
});
La sintaxis pm.expect(valor).to.be.a('string')
es parte de la librería de aserciones Chai.js, que hace que los tests sean muy legibles.
Una de las funcionalidades más potentes es la capacidad de tomar un dato de una respuesta y usarlo en la siguiente petición. Crearemos un flujo para obtener un post y luego leer sus comentarios.
GET
a https://jsonplaceholder.typicode.com/posts/10
.id
del post y guárdalo en una variable de colección.// Script en la Petición 1 (Scripts)
pm.test("Guardar el ID del post", function () {
const responseData = pm.response.json();
pm.expect(responseData.id).to.exist; // Asegurarse de que el id existe
// Guardar el id en una variable de colección
pm.collectionVariables.set("postId", responseData.id);
console.log("ID del post guardado:", responseData.id);
});
GET
.https://jsonplaceholder.typicode.com/posts/{{postId}}/comments
.{{postId}}
con el valor guardado (en este caso, 10), y obtendrás los comentarios específicos de ese post.Este patrón es fundamental para probar flujos completos, como crear un recurso, luego actualizarlo y finalmente eliminarlo, usando siempre el ID devuelto por la primera petición.
Los scripts de pre-request te permiten modificar la petición justo antes de que se envíe.
Ejemplo: Añadir un timestamp a la URL para evitar el caché del navegador o del servidor.
GET
a https://api.example.com/data?cache_buster={{timestamp}}
.// Script en la pestaña Pre-request Script
const now = new Date();
pm.variables.set("timestamp", now.getTime());
Cada vez que envíes la petición, el script se ejecutará, generando un nuevo timestamp y asegurando que la URL sea única.
pm.test()
) debe explicar claramente qué se está validando. "El email del usuario debe ser un formato válido" es mejor que "Test 1".pm.test()
valide una única cosa. Es más fácil depurar 5 tests pequeños que fallan que un test grande con 5 aserciones.console.log()
es tu mejor amiga para depurar. Úsala para imprimir el contenido de las variables o el cuerpo de la respuesta y entender qué está pasando en tus scripts.