Consultas SQL: Insert, Select y Delete en Base de Datos

Clase 12 de 17Curso de Automatización de Pruebas de Backend con Cypress

Resumen

¿Cómo realizamos inserciones en bases de datos con Cypress?

Comenzar a trabajar con bases de datos desde Cypress puede parecer una tarea desalentadora, pero en realidad, con las herramientas correctas y un poco de práctica, es un proceso bastante sencillo. En este caso, nos enfocaremos en cómo realizar inserciones en una base de datos como parte de nuestras pruebas automatizadas.

Para realizar un insert, utilizamos la sintaxis SQL estándar:

insert into pruebas (nombre, apellido_paterno, apellido_materno) values ("Javier", "Fuentes", "Mora");
  • Insertar datos: Esta instrucción inserta un nuevo registro en la tabla pruebas.
  • Visualizar resultados: Al ejecutar el comando, podemos visualizar que el registro ha sido insertado correctamente.

Además, es importante validar que la inserción se realizó de manera correcta. En este caso, al ejecutar el insert, verificamos que solo una fila fue afectada:

expect(result.affectedRows).to.equal(1);

¿Cómo podemos realizar consultas con condiciones?

Posteriormente, podemos validar nuestra inserción mediante un SELECT usando un filtro por el ID generado. Esto se logra con la instrucción WHERE en SQL:

SELECT * FROM pruebas WHERE ID = ${this.ID};

Al ejecutar esta consulta, obtenemos únicamente el registro que acabamos de insertar. Una vez obtenida esta información, es posible realizar aserciones para comprobar que los datos obtenidos coinciden con los valores insertados:

expect(result[0].nombre).to.equal("Javier");

Es vital recordar que, para permitir el uso de variables de contexto como this.ID, no debemos usar funciones tipo flecha, sino funciones normales para preservar el contexto.

¿Cómo eliminamos registros específicos y limpiamos nuestra base de datos?

Una vez finalizadas nuestras pruebas, es común eliminar los datos de prueba. Esto puede lograrse mediante un DELETE condicionado a un ID específico:

DELETE FROM pruebas WHERE ID = ${this.ID};

Al igual que con el insert, es importante verificar que solo un registro fue eliminado:

expect(result.affectedRows).to.equal(1);

Para asegurar que la base de datos quede limpia después de todas las pruebas, podemos utilizar el hook de after para eliminar todos los registros:

after(() => {
  cy.task('queryDB', 'DELETE FROM pruebas');
});

Al ejecutar este comando, nos aseguramos que nuestra tabla pruebas esté vacía para las futuras pruebas. Sin embargo, esto debe usarse con cautela para evitar eliminar datos de producción por error.

Este ciclo de operaciones: inserción, selección, eliminación y limpieza, es fundamental para gestionar pruebas automatizadas en bases de datos SQL, asegurando consistencia y el correcto funcionamiento de las pruebas.