Pruebas de Bases de Datos Relacionales con MySQL y Cypress

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

Resumen

¿Cómo probar bases de datos relacionales con MySQL?

Las bases de datos relacionales son fundamentales para el almacenamiento estructurado de datos, permitiendo manejar grandes volúmenes de información. En esta guía te mostraré cómo configurar y probar bases de datos relacionales usando MySQL, una de las tecnologías más comunes en esta área. Aprenderemos a crear un plugin para conectar a nuestra base de datos y asegurarnos de que nuestras consultas funcionan correctamente.

¿Cómo configurar MySQL para nuestras pruebas?

El primer paso es instalar la librería MySQL. Este componente es esencial para poder establecer conexiones y realizar consultas a nuestra base de datos. Una vez instalada, vamos a desarrollarlo en el contexto de Cypress y su sistema de plugins:

  1. Importar la librería de MySQL:

    const MySQL = require('mysql');
    
  2. Crear una función para realizar queries:

    Debemos definir una función que maneje las consultas a nuestra base de datos de prueba:

    function queryTestDb(query, config) {
        const connection = MySQL.createConnection(config);
        return new Promise((resolve, reject) => {
            connection.query(query, (error, results) => {
                if (error) reject(error);
                connection.end();
                resolve(results);
            });
        });
    }
    
  3. Configurar el plugin en Cypress:

    Usa el método onTask para integrarlo en Cypress, permitiendo ejecutar queries durante las pruebas:

    module.exports = (on, config) => {
        on('task', {
            queryDB: (query) => {
                return queryTestDb(query, config.env.db);
            }
        });
    };
    

¿Cómo manejar la configuración de la base de datos?

Para mantener la seguridad de nuestros datos y evitar exponer credenciales sensibles, usaremos un archivo de entorno específico para Cypress. Este archivo nos permite definir las credenciales de nuestra base datos:

  1. Creación del archivo cypress.env.json:

    En este archivo, definimos parámetros vitales para conectar con la base de datos:

    {
        "db": {
            "host": "tu_host",
            "user": "tu_usuario",
            "password": "tu_contraseña",
            "database": "tu_base_de_datos"
        }
    }
    
  2. Agregar a .gitignore:

    Es crucial incluir este archivo en .gitignore para evitar subir información sensible al repositorio.

¿Cómo validar que nuestra configuración funciona?

Lo siguiente es comprobar que la configuración realizada es efectiva probando un SELECT en nuestra base de datos a través de Cypress:

  1. Crear un archivo de prueba bd.spec.js:

    Define una prueba básica que ejecuta un SELECT:

    describe('Pruebas Base de Datos', () => {
        it('Debe ejecutar un SELECT exitosamente', () => {
            cy.task('queryDB', 'SELECT * FROM pruebas').then((results) => {
                console.log(results);
            });
        });
    });
    
  2. Ejecutar la prueba con Cypress:

    Corre la prueba y verifica que sea exitosa. En casos como este, donde la base de datos está vacía, es normal recibir un array vacío si la consulta fue correcta.

Aprender a testear y manejar bases de datos relacionales con MySQL no solo es útil para garantizar la estabilidad de nuestras aplicaciones, sino también para asegurar la correcta manipulación y almacenamiento de datos críticos. Continúa avanzando e incorpora esta metodología para manejar distintas consultas como INSERT y DELETE. ¡La práctica constante te ayudará a dominar estas habilidades!