Cómo usar consultas de base de datos en pruebas de API con Apidog (MySQL, MongoDB, Redis)

Aprende cómo usar consultas de base de datos en pruebas de API con Apidog: sembrar datos, verificar filas contra MySQL, MongoDB y Redis, y extraer valores de BD entre pasos.

INEZA Felin-Michel

INEZA Felin-Michel

15 July 2026

Cómo usar consultas de base de datos en pruebas de API con Apidog (MySQL, MongoDB, Redis)

Apidog para empresas

Despliegue local

SSO & RBAC

Conforme con SOC 2

Explorar Apidog Enterprise

Un código de estado verde miente. Su endpoint POST /orders devuelve 201 Created, el cuerpo de la respuesta parece perfecto y su prueba pasa. Pero, ¿la fila realmente aterrizó en la base de datos con el estado correcto? ¿Disminuyó el recuento de inventario? Una prueba que solo lee la respuesta HTTP verifica lo que la API dijo, no lo que el sistema hizo. Para cerrar esa brecha, debe mirar la base de datos misma.

Ahí es donde las consultas a la base de datos dentro de un escenario de prueba demuestran su valía. Usted siembra un estado conocido antes de una solicitud, dispara la solicitud y luego consulta la tabla para confirmar la verdad en el disco. Apidog tiene esto incorporado a través de Conexiones de Base de Datos y el procesador de Operación de Base de Datos, para que pueda ejecutar comandos SQL o NoSQL como pasos en el mismo escenario que impulsa sus llamadas HTTP, sin necesidad de scripting externo. Si es nuevo en la creación de escenarios, la guía sobre cómo escribir un escenario de prueba con Apidog cubre los conceptos básicos a nivel de solicitud sobre los que se basa este artículo. Para un repaso sobre cómo los almacenes relacionales modelan estos datos, la descripción general del lado del servidor de MDN es una buena introducción.

button

Qué le ofrecen las operaciones de base de datos en una prueba

Una prueba de API que nunca toca la base de datos es una caja negra. Confía en la respuesta. La mayoría de las veces eso está bien, pero los errores interesantes residen en la brecha entre lo que devuelve la API y lo que persiste: un campo de estado que nunca cambia, una clave externa que no apunta a ninguna parte, una eliminación suave que elimina permanentemente.

Los pasos de la base de datos le permiten hacer tres cosas que una prueba HTTP pura no puede:

Apidog divide la función en dos. Primero, crea una conexión reutilizable en Configuración > Conexiones de Base de Datos. Luego, adjunta un paso de Operación de Base de Datos a una solicitud como Preprocesador (se ejecuta antes de la solicitud) o Postprocesador (se ejecuta después). Una conexión, reutilizada en cada escenario del proyecto.

Una nota sobre la cobertura antes de planificar. MySQL, SQL Server (2014 y posterior), PostgreSQL y Oracle funcionan con el plan gratuito. ClickHouse, MongoDB y Redis son de pago. La documentación de MongoDB lo dice claramente: conectarse a MongoDB es una función de pago. Lo mismo ocurre con Redis. Así que el recorrido de MySQL a continuación se ejecuta en el nivel gratuito; las secciones de Mongo y Redis necesitan un plan de pago.

Paso 1: crear una conexión a la base de datos

Abra Configuración > Conexiones de Base de Datos y haga clic en + Nuevo en la parte superior derecha. Seleccione su tipo de base de datos y luego complete los campos de conexión:

Si su base de datos está detrás de un bastión, expanda la sección Túnel SSH y agregue los detalles del host de salto. MySQL también expone un modo SSL con cuatro opciones: Prefer (el predeterminado, que intenta SSL y luego regresa), Require, Verify CA y Verify Full. Elija el más estricto que admita su servidor. Luego haga clic en Guardar.

Dos errores comunes de conexión le ahorrarán una tarde de confusión:

Paso 2: sembrar datos con un Preprocesador

Supongamos que está probando el flujo de creación de pedidos. Desea que exista un cliente conocido antes de realizar un pedido, para que la prueba no dependa de lo que haya en la tabla.

Abra su solicitud, busque Preprocesadores, pase el cursor sobre Agregar Procesador de Base de Datos y elija Operación de base de datos. Nómbrelo algo como sembrar cliente, seleccione su conexión MySQL, luego en Introducir Comando SQL escriba una inserción. Las variables dinámicas usan la sintaxis {{nombre_variable}}, para que pueda extraer valores directamente de su entorno:

INSERT INTO customers (id, email, status)
VALUES ({{customer_id}}, '{{customer_email}}', 'active')
ON DUPLICATE KEY UPDATE status = 'active';

Ahora la solicitud se ejecuta contra un estado garantizado. El cliente existe, está activo y tiene una ID que sus pasos posteriores ya conocen. La siembra en un Preprocesador mantiene cada prueba autónoma en lugar de depender de los efectos secundarios del orden de las pruebas.

Paso 3: afirmar contra la base de datos con un Postprocesador

Aquí está el núcleo de la cuestión. Su solicitud crea un pedido. Después de que se devuelve, consulta la tabla orders para confirmar que la fila existe con el estado correcto.

Agregue la solicitud que llama a su API:

POST /api/orders
Content-Type: application/json

{
  "customer_id": {{customer_id}},
  "items": [{ "sku": "APRON-01", "qty": 2 }]
}

Asuma que el cuerpo de la respuesta contiene el nuevo ID de pedido, que captura en una variable llamada order_id con una aserción de respuesta normal. Ahora abra Postprocesadores en esa solicitud. En MODO DISEÑO los encontrará en la pestaña Ejecutar; en MODO DEBUG están en la pestaña Solicitud. Pase el cursor sobre Agregar Postprocesador, seleccione Operación de base de datos, nómbrelo verificar fila de pedido y elija su conexión.

En Configurar Operación, elija la operación e introduzca el SQL:

SELECT id, status, total_cents
FROM orders
WHERE id = {{order_id}};

Los resultados de la consulta se devuelven como un array de objetos, uno por fila. Para extraer un solo campo, abra Extraer Resultados (Opcional) y agregue una entrada de Extraer Resultado a Variable. Establezca un Nombre de Variable como db_order_status y una Expresión JSONPath que aísle el campo de la primera fila:

$[0].status

Haga clic en Enviar y verifique la Consola para ver el resultado sin procesar y el valor extraído. Ahora db_order_status contiene lo que realmente está en el disco. Agregue una aserción de que es igual a pending (o lo que sea que su API deba establecer), y su prueba finalmente verificará la persistencia, no solo el eco HTTP. Si la API devolvió 201 pero escribió status = 'draft', este es el paso que lo detecta.

Paso 4: extraer un valor de la base de datos y usarlo en pasos posteriores

La extracción no es solo para aserciones. A menudo, la base de datos contiene un valor que la respuesta nunca devuelve, y lo necesita para la siguiente solicitud.

Imagine un flujo en el que la creación de un pedido también genera una fulfillment_ref interna en el servidor, escrita en la fila pero omitida de la respuesta de la API. Su siguiente solicitud, GET /api/fulfillments/{ref}, la necesita. Consúltela en un Postprocesador:

SELECT fulfillment_ref
FROM orders
WHERE id = {{order_id}};

Extráigala con Nombre de Variable fulfillment_ref y Expresión JSONPath $[0].fulfillment_ref. Debido a que Apidog limita el alcance de esa variable al entorno, su siguiente solicitud simplemente referencia {{fulfillment_ref}} en su ruta o cuerpo y recoge el valor real generado por el servidor. Este es el mismo patrón que el encadenamiento de respuestas HTTP, cubierto en pasar datos entre pasos de prueba y orquestación de pruebas de API y paso de datos, excepto que la fuente de verdad es una tabla en lugar de un cuerpo JSON.

MongoDB y Redis: las variantes NoSQL

El procesador funciona de la misma manera para los almacenes NoSQL, con una superficie de configuración diferente. Ambas son funciones de pago, así que planifique en consecuencia. La documentación de Apidog tiene la referencia completa de los campos si la necesita.

MongoDB

Agregue un paso de Operación de Base de Datos y seleccione MongoDB como tipo. En lugar de SQL puro, obtendrá un menú desplegable de Tipo de Operación con Buscar, Insertar, Actualizar, Eliminar y Ejecutar Comando de Base de Datos. Para cualquier acción CRUD, el Nombre de la Colección es obligatorio. El campo Condición de Consulta acepta JSON:

{ "_id": "65486728456e79993a150f1c" }

Apidog convierte automáticamente una cadena de ID coincidente en un ObjectId, por lo que no tiene que envolverla usted mismo. Cuando necesite tipos BSON, se admiten las funciones auxiliares ISODate(...), ObjectId(...), NumberDecimal(...) y NumberLong(...); el manual de MongoDB documenta cómo cada una de ellas se asigna a un valor almacenado. La conexión acepta una cadena de conexión completa o los componentes individuales de host y credenciales.

Una nota honesta: el flujo de MySQL documenta la extracción de JSONPath en una variable, pero la documentación de MongoDB y Redis no describe ese mismo mecanismo de Extraer Resultado a Variable. Por lo tanto, apóyese en las operaciones de Mongo para sembrar y confirmar el estado, y no asuma que la ruta de extracción estilo SQL funciona de manera idéntica hasta que lo haya verificado en la Consola.

Redis

La conexión de Redis solicita Host, Puerto, Contraseña e Índice de Base de Datos. Las operaciones visuales utilizan un menú desplegable de Tipo de Operación que admite GET, SET y DELETE. Para leer una sesión almacenada en caché, elija GET y establezca la Clave en algo como user:session:123. Para cualquier cosa que el menú desplegable no cubra, la pestaña Ejecutar Comando Redis ejecuta cualquier comando válido:

KEYS user:*

Así es como se confirma una entrada de caché que la API debería haber escrito, o se borra una antes de una prueba para demostrar que el endpoint la vuelve a llenar.

Variaciones y límites avanzados

Algunas cosas que vale la pena saber antes de construir una suite grande:

Administrar credenciales por entorno

Nunca querrá que una prueba acceda a datos de producción por accidente. La respuesta de Apidog es una Conexión de Base de Datos por entorno. Usted crea una conexión de staging y una conexión local, cada una con su propio host y contraseña.

Luego, cambia de entorno usando el menú desplegable en la esquina superior derecha. Apidog enruta automáticamente cada consulta en el escenario a la conexión que coincide con el entorno seleccionado actualmente. Seleccione staging y su SELECT se ejecutará contra staging; cambie a local y el mismo paso se ejecutará contra la base de datos de su computadora portátil, sin ediciones al SQL o al paso. Las credenciales difieren por entorno sin ninguna reconfiguración manual a mitad de la ejecución.

Debido a que esas credenciales residen localmente y no se sincronizan, esto también mantiene las contraseñas de producción fuera del proyecto compartido en la nube. Cada ingeniero tiene las suyas propias.

Automatice el flujo de trabajo con la CLI de Apidog

Una vez que el escenario pasa en la aplicación, ejecútelo sin interfaz gráfica en CI para que cada solicitud de extracción vuelva a verificar la base de datos, no solo el contrato HTTP. Instale la CLI y autentíquese:

npm install -g apidog-cli
apidog login --with-token <YOUR_ACCESS_TOKEN>

Luego, ejecute el escenario exacto que construyó, por su ID, contra un entorno elegido:

apidog run --access-token $APIDOG_ACCESS_TOKEN -t <scenario_id> -e <env_id> -r cli

Aquí -t es el ID del escenario de prueba, -e es el ID del entorno y -r es el reportero (cli, html o junit; sepárelos con comas para varios, como -r html,cli). Una cosa a tener en cuenta: los detalles de conexión de la base de datos son locales, por lo que el ejecutor necesita la configuración exportada para llegar a su base de datos desde CI. Si alimenta las filas del escenario desde un conjunto de datos, las pruebas impulsadas por datos con la CLI de Apidog muestran cómo cada fila ejecuta las mismas aserciones de la base de datos, y la programación de pruebas de API con Apidog cubre cómo ejecutar esto con una cadencia para que una aserción de base de datos fallida aparezca como cualquier otra prueba.

Preguntas frecuentes

¿Qué bases de datos son gratuitas y cuáles son de pago? MySQL, SQL Server (2014 y posterior), PostgreSQL y Oracle están en el plan gratuito. ClickHouse, MongoDB y Redis necesitan un plan de pago. La documentación de MongoDB y Redis establece que su conectividad es una característica de pago, así que consulte la página de precios antes de planificar una suite NoSQL. Descargue Apidog para probar primero las bases de datos gratuitas.

¿Puedo usar un valor de la base de datos en una solicitud posterior? Sí. Agregue un Postprocesador con una operación de Base de Datos, ejecute un SELECT, luego use Extraer Resultado a Variable con un Nombre de Variable y una Expresión JSONPath como $[0].fulfillment_ref para aislar el campo de la primera fila. Hágale referencia más tarde como {{nombre_variable}}. La misma idea de encadenamiento para respuestas HTTP se cubre en pasar datos entre pasos de prueba.

¿Mis compañeros de equipo obtienen automáticamente mis conexiones a la base de datos? No. Las credenciales de conexión se almacenan localmente en cada cliente y no se sincronizan con la nube, por lo que cada miembro del equipo configura la conexión por sí mismo. Esto es intencional: mantiene las contraseñas de producción fuera del proyecto compartido.

Mi conexión a MySQL 8 sigue fallando. ¿Por qué? MySQL 8 usa por defecto el plugin de autenticación caching_sha2_password, que puede bloquear la conexión. Cambie el usuario a mysql_native_password con ALTER USER ... IDENTIFIED WITH mysql_native_password y vuelva a conectarse.

¿Puedo ejecutar procedimientos almacenados o lógica de base de datos compleja? No a través de la interfaz visual. Maneja sentencias estándar SELECT, INSERT, UPDATE y DELETE, pero no se admiten operaciones complejas como los procedimientos almacenados. Mantenga sus pasos de prueba con sentencias directas.

Conclusión

Las consultas a la base de datos transforman una prueba de API de "la respuesta parecía correcta" a "los datos son realmente correctos". Siembre un estado conocido en un Preprocesador, verifique la fila persistente en un Postprocesador y extraiga los valores generados por el servidor para encadenarlos a la siguiente solicitud, todo dentro de un solo escenario. Configure una conexión por entorno y los mismos pasos se ejecutarán de forma segura contra staging o local sin ediciones.

Pruébelo gratis, sin tarjeta de crédito: Descargue Apidog, apunte una conexión MySQL a su base de datos de desarrollo y agregue un Postprocesador que lea la fila que crea su siguiente solicitud.

Practica el diseño de API en Apidog

Descubre una forma más fácil de construir y usar APIs