Pruebas de APIs con Cypress: POST, PUT y DELETE
Clase 9 de 17 • Curso de Automatización de Pruebas de Backend con Cypress
Resumen
¿Cómo probar peticiones con API usando Cypress?
Las peticiones HTTP son una parte esencial del uso de APIs en el ámbito de desarrollo web. En esta clase aprenderás a cómo ejecutar un flujo de trabajo que te será de utilidad al probar APIs utilizando Cypress. Aprenderemos a realizar las peticiones POST, GET, PUT y DELETE, además de cómo validar respuestas y gestionar datos de prueba.
¿Cómo crear un archivo de pruebas en Cypress?
Para comenzar, es importante tener un archivo de pruebas donde ejecutar nuestro código. Aquí te mostramos cómo crearlo y realizar una prueba de petición:
describe('Probando requests', () => {
let empleado;
before(() => {
empleado = {
firstName: 'Javier',
lastName: 'Prueba',
email: 'javier@prueba.com'
};
});
it('Debe crear un nuevo empleado', () => {
cy.request({
method: 'POST',
url: '/employees',
body: empleado
}).then(response => {
expect(response.status).to.eq(201);
expect(response.body).to.have.property('id');
cy.wrap(response.body.id).as('employeeId');
});
});
});
¿Cómo validar los resultados de las pruebas?
Para garantizar que las peticiones han sido exitosas, es crucial validar las respuestas que recibimos al interactuar con las APIs. Aquí tienes cómo hacerlo:
- Status Code: Verificamos que el estado devuelto corresponda al esperado, como el 201 al crear un recurso.
- Cuerpo de la respuesta: Asegúrate de que los datos retornados sean los enviados.
Ejemplo de validación de respuesta:
cy.request({
method: 'GET',
url: `/employees/${this.employeeId}`
}).then(response => {
expect(response.status).to.eq(200);
expect(response.body.firstName).to.eq('Javier');
});
¿Cómo actualizar y eliminar un registro?
Modificar y eliminar registros son tareas comunes durante las pruebas. Usamos métodos PUT y DELETE para estas operaciones.
Para actualizar un registro:
cy.request({
method: 'PUT',
url: `/employees/${this.employeeId}`,
body: {
firstName: 'Pepito',
lastName: 'Desarrollador',
email: 'nuevo@correo.com'
}
}).then(response => {
expect(response.status).to.eq(200);
expect(response.body).to.have.property('id', this.employeeId);
});
Para eliminar un registro:
cy.request({
method: 'DELETE',
url: `/employees/${this.employeeId}`
}).then(response => {
expect(response.status).to.eq(200);
});
¿Qué hacer para evitar dejar datos de prueba en la base de datos?
Es importante no dejar trazos de nuestros datos de prueba en la base de datos. Por ello, considera eliminar datos de prueba al finalizar el test. También, los hooks de Cypress pueden automatizar estas acciones.
Reto: Lleva este flujo al siguiente nivel. Usa hooks de Cypress para crear y limpiar automáticamente tus datos antes y después de las pruebas. Esto mejora la confiabilidad y limpieza de las pruebas.
Próximos pasos en la exploración de APIs
Las APIs van evolucionando, y entender cómo testear GraphQL será un añadido vital para cualquier tester moderno. En nuestra próxima clase, nos profundizaremos en las APIs de tipo GraphQL, cada vez más adoptadas por empresas por su eficiencia y flexibilidad. No te quedes atrás en esta emocionante área del testing.