DEV Community

Cover image for Cómo añadir ramificación If/Else y control de flujo a escenarios de prueba de API en Apidog
Roobia
Roobia

Posted on • Originally published at apidog.com

Cómo añadir ramificación If/Else y control de flujo a escenarios de prueba de API en Apidog

La mayoría de las pruebas de API se ejecutan de forma lineal: inicio de sesión, proceso de compra, recibo y aserciones. Este flujo falla cuando un paso depende del anterior. Si el inicio de sesión devuelve 401, ejecutar el proceso de compra no aporta información y puede ocultar el error original detrás de un segundo fallo. La solución es usar lógica condicional para leer la respuesta, decidir si continuar y reportar exactamente dónde falló el escenario.

Prueba Apidog hoy

En esta guía configurará una bifurcación if/else en un escenario de prueba de API con Apidog: iniciar sesión, comprobar el código de estado y ejecutar el proceso de compra solo si la autenticación fue correcta. Si todavía no ha creado escenarios lineales, consulte la guía sobre cómo escribir un escenario de prueba con Apidog. Para revisar el patrón if/else, vea la guía de MDN sobre sentencias condicionales.

Qué es el control de flujo y qué no es

En Apidog, las pruebas automatizadas se crean en el módulo Pruebas. La unidad principal es el Escenario de Prueba, análogo a una colección en Postman. Dentro de un escenario se agregan Pasos de Prueba: solicitudes HTTP y elementos de control de flujo, como bifurcaciones, bucles o esperas.

El control de flujo permite que el escenario haga más que ejecutar solicitudes en orden. Según la documentación de Apidog sobre control de flujo y bifurcación condicional, una Bifurcación Condicional funciona como un if/else:

  1. Lee un valor de un paso anterior.
  2. Evalúa ese valor con una condición.
  3. Ejecuta los pasos de la rama If o los de la rama Else.

No confunda una bifurcación con un bucle:

  • Una bifurcación decide una vez qué ruta ejecutar.
  • Un bucle repite un bloque de pasos varias veces.

Para iterar sobre un array de IDs de pedido, use un bucle ForEach, no una bifurcación. Consulte el tutorial de bucle ForEach para ese caso.

La documentación de Apidog no indica restricciones de plan para control de flujo, bifurcaciones condicionales, bucles o paso de datos entre pasos. Tampoco distingue estas funciones entre la versión en la nube y la autoalojada.

Construya un escenario que se bifurque según la respuesta de inicio de sesión

El objetivo será este:

Si login devuelve 200:
  ejecutar proceso de compra
Si login devuelve otro código:
  registrar el fallo y detener la ruta de compra
Enter fullscreen mode Exit fullscreen mode

Paso 1: cree el escenario de prueba

  1. Abra Apidog y vaya al módulo Pruebas.
  2. Haga clic en + junto a la barra de búsqueda.
  3. Cree un Escenario de Prueba.
  4. Seleccione el directorio y la prioridad.
  5. Guarde el escenario vacío.

Paso 2: agregue la solicitud de inicio de sesión

Añada un Paso de Prueba con una solicitud personalizada. Por ejemplo:

POST https://api.your-store.com/v1/login
Content-Type: application/json

{
  "email": "dana@example.com",
  "password": "correct-horse-battery-staple"
}
Enter fullscreen mode Exit fullscreen mode

Ejecute esta solicitud de forma aislada antes de crear la bifurcación. Debe conocer la estructura real de la respuesta. Un inicio de sesión correcto puede devolver:

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "userId": "usr_10482"
}
Enter fullscreen mode Exit fullscreen mode

Paso 3: abra el modo de orquestación

Haga clic en cualquier paso para entrar en el modo de orquestación:

  • El panel izquierdo muestra el flujo del escenario.
  • El panel derecho muestra la configuración del paso seleccionado.
  • Puede reordenar pasos arrastrando el icono .

Aquí es donde añadirá y organizará las ramas If y Else.

Paso 4: añada una Bifurcación Condicional

  1. Haga clic en Añadir Paso.
  2. Seleccione Bifurcación Condicional.
  3. Configure la condición para validar el resultado del login.

Apidog ofrece operadores como:

  • Es igual a
  • No es igual a
  • Existe
  • No existe
  • Menor que
  • Menor o igual que
  • Mayor que
  • Mayor o igual que
  • Coincide con Regex
  • Contiene
  • No contiene
  • Está vacío
  • No está vacío
  • En la lista
  • No en la lista

Para este escenario, la condición debe ser equivalente a:

estado de respuesta del login Es igual a 200
Enter fullscreen mode Exit fullscreen mode

Paso 5: use datos del paso anterior en la condición

Puede alimentar la condición de dos formas.

Opción A: Recuperar datos de paso previo

Esta es la ruta más directa para usar la respuesta del login.

  1. Haga clic en el campo de valor de la condición.
  2. Haga clic en el icono de varita mágica.
  3. Seleccione Recuperar datos de paso previo.
  4. Elija el paso de inicio de sesión.
  5. Seleccione el código de estado de la respuesta.

Internamente, Apidog usa referencias con esta sintaxis:

{{$.<step id>.response.body.<field path>}}
Enter fullscreen mode Exit fullscreen mode

Por ejemplo, para recuperar el token del cuerpo de respuesta del paso 1:

{{$.1.response.body.token}}
Enter fullscreen mode Exit fullscreen mode

Tenga en cuenta dos limitaciones:

  • Recuperar datos de paso previo funciona en el módulo Pruebas, no en el módulo APIs.
  • La referencia se resuelve al ejecutar el escenario completo, no al ejecutar un paso aislado.

Si una referencia aparece vacía durante una ejecución individual, ejecute todo el escenario.

Opción B: extraer una variable con nombre

Si necesita reutilizar el token u otro valor en varios pasos o módulos:

  1. Abra los post-procesadores de la solicitud de login.
  2. Añada Extraer Variable.
  3. Use una expresión JSONPath, por ejemplo:
$.token
Enter fullscreen mode Exit fullscreen mode
  1. Guarde el valor con un nombre, por ejemplo token.
  2. Reutilícelo en otros pasos:
{{token}}
Enter fullscreen mode Exit fullscreen mode

Este enfoque es útil para compartir valores entre solicitudes, bifurcaciones o módulos. Para más detalles, consulte cómo pasar datos entre pasos de prueba.

Para validar el código de estado del login, Recuperar datos de paso previo es la opción más corta.

Paso 6: configure las ramas If y Else

Pase el cursor sobre el bloque If y haga clic en + Else.

Ahora configure ambos caminos.

Rama If: ejecutar el proceso de compra

Dentro del bloque If, agregue la solicitud de proceso de compra. Esta solicitud se ejecutará solo si el login devolvió 200.

Si el endpoint necesita el token de autenticación, añádalo al encabezado:

Authorization: Bearer {{token}}
Enter fullscreen mode Exit fullscreen mode

También puede usar una referencia al paso previo si no extrajo la variable. Este patrón coincide con las solicitudes autenticadas descritas en la documentación de la API de Stripe.

Rama Else: hacer visible el error

Dentro del bloque Else, añada un paso que deje claro que el login falló. Por ejemplo:

  • Una solicitud a un endpoint de logs o notificaciones.
  • Una solicitud personalizada con una aserción que falle siempre.
  • Un paso que registre el código de estado y el cuerpo de la respuesta.

El flujo final debe quedar así:

Login
  ├── If: status == 200
  │     └── Crear proceso de compra
  └── Else
        └── Registrar fallo de autenticación
Enter fullscreen mode Exit fullscreen mode

Paso 7: guarde y ejecute el escenario

Haga clic en Guardar todo.

Después, ejecute el escenario completo con dos casos:

  1. Credenciales válidas: debe ejecutarse la rama If.
  2. Credenciales inválidas: debe ejecutarse la rama Else.

Los cambios sin guardar muestran un indicador de punto. Si aparece, guarde antes de ejecutar o compartir el escenario.

Variaciones y control de flujo avanzado

Una vez configurada la bifurcación básica, puede aplicar el mismo patrón a otros casos.

  • Bifurcar según un campo del cuerpo de respuesta. No está limitado al código de estado. Por ejemplo, si el endpoint devuelve 200 incluso cuando una cuenta está bloqueada, evalúe:
  {{$.1.response.body.status}}
Enter fullscreen mode Exit fullscreen mode

Luego compare el valor con "active" usando Es igual a, o use Contiene para evaluar un mensaje.

  • Evaluar rangos y listas.

    Use Mayor que para validar un saldo o En la lista para comprobar si un rol pertenece a un conjunto permitido.

  • Combinar bifurcaciones con bucles.

    Dentro de un bucle ForEach, puede omitir productos sin stock y procesar los restantes. Las referencias disponibles incluyen:

  {{$.<loop step id>.index}}
Enter fullscreen mode Exit fullscreen mode
  {{$.<loop step id>.element.<field path>}}
Enter fullscreen mode Exit fullscreen mode

El índice comienza en 0. Para implementar este patrón, consulte el tutorial de bucle ForEach.

  • Detener un bucle antes con Break If.

    Use Break If condition para finalizar un bucle cuando se cumpla una condición. Puede reposicionarlo y añadirlo varias veces dentro del mismo bucle.

  • Gestionar errores con On Error.

    Los bucles incluyen un elemento fijo On Error. Sus opciones controlan qué ocurre cuando falla una solicitud dentro del ciclo:

    • Ignorar: continúa con la siguiente solicitud.
    • Continuar: omite el resto de solicitudes del ciclo actual.
    • Interrumpir ejecución: detiene el bucle y continúa después de él.
    • Finalizar ejecución: detiene todo el escenario.
  • Añadir una espera entre solicitudes.

    Use Espera para introducir un retraso en milisegundos, por ejemplo entre una operación de creación y una lectura de verificación.

  • Calcular condiciones complejas con scripts.

    Cuando los operadores visuales no son suficientes, use scripts pre-procesador o post-procesador. Dentro de un script no puede usar {{variable}} directamente. Use:

  pm.variables.get("$.2.response.body.token")
Enter fullscreen mode Exit fullscreen mode

Ajuste el ID del paso y la ruta del campo según su escenario. Para profundizar, consulte las guías sobre encadenamiento de solicitudes y orquestación de pruebas de API y paso de datos.

Un escenario no puede referenciarse a sí mismo. Esta restricción evita bucles infinitos accidentales cuando se anidan escenarios.

Automatice el escenario con la CLI de Apidog

Puede ejecutar el escenario sin interfaz gráfica desde CI. Instale la CLI e inicie sesión:

npm install -g apidog-cli
apidog login --with-token <YOUR_ACCESS_TOKEN>
Enter fullscreen mode Exit fullscreen mode

Ejecute el escenario por ID, indicando entorno y reportero:

apidog run --access-token $APIDOG_ACCESS_TOKEN -t <scenario_id> -e <env_id> -r cli
Enter fullscreen mode Exit fullscreen mode

Parámetros principales:

  • -t: ID del escenario de prueba.
  • -e: ID del entorno.
  • -r: reportero.

Puede usar:

-r cli
Enter fullscreen mode Exit fullscreen mode

Para salida de consola, o generar varios reportes:

-r html,cli
Enter fullscreen mode Exit fullscreen mode

También están disponibles reportes html y junit para publicarlos como artefactos del pipeline.

La bifurcación se comporta igual que en la aplicación: la CLI evalúa la respuesta del login, sigue la rama If o Else, y devuelve un código de salida acorde al resultado. Un login fallido puede, por tanto, hacer fallar la compilación de CI.

Consulte la guía de instalación de la CLI de Apidog, la guía de Acciones de GitHub de la CLI de Apidog y la guía para programar pruebas de API en Apidog.

Preguntas frecuentes

¿Cuál es la diferencia entre una bifurcación condicional y un bucle?

Una bifurcación decide una sola vez qué bloque ejecutar según una condición. Un bucle ejecuta un bloque repetidamente.

Use una bifurcación para decisiones como:

Si login fue exitoso, crear proceso de compra.
Si no, registrar el error.
Enter fullscreen mode Exit fullscreen mode

Use For o ForEach para repetir solicitudes sobre un número de iteraciones o un array. Consulte el tutorial del bucle ForEach.

¿Por qué aparece vacía mi referencia de Recuperar datos de paso previo?

Las causas habituales son:

  1. Está usando el módulo APIs en lugar del módulo Pruebas.
  2. Está ejecutando un paso aislado en lugar del escenario completo.

La referencia necesita una ejecución completa del escenario para obtener la respuesta del paso anterior.

¿Puedo bifurcar según un campo del cuerpo de respuesta?

Sí. Puede usar una referencia como:

{{$.1.response.body.status}}
Enter fullscreen mode Exit fullscreen mode

O extraer el valor a una variable con nombre. Después, aplique operadores como Es igual a, Contiene o En la lista. Consulte cómo pasar datos entre pasos de prueba.

¿Cómo uso una variable dentro de un script?

Los scripts no aceptan directamente la sintaxis {{variable}}. Use:

pm.variables.get("$.2.response.body.token")
Enter fullscreen mode Exit fullscreen mode

Ajuste el ID del paso y la ruta del campo para recuperar el valor necesario.

¿La bifurcación requiere un plan adicional o la versión autoalojada?

La documentación de Apidog no indica restricciones de plan para control de flujo, bifurcaciones, bucles o paso de datos. Tampoco diferencia estas capacidades entre la versión en la nube y la autoalojada.

Conclusión

Una prueba lineal indica que algo falló. Una prueba con bifurcaciones indica dónde falló y evita ejecutar pasos que ya no pueden tener éxito.

Para implementar este patrón:

  1. Añada una Bifurcación Condicional.
  2. Use una respuesta previa o una variable extraída como entrada.
  3. Configure la condición del bloque If.
  4. Añada una rama + Else para registrar o detener el flujo ante errores.
  5. Ejecute el escenario completo y automatícelo con apidog run en CI.

Pruebe Apidog gratis y convierta pruebas lineales en escenarios que toman decisiones según las respuestas reales de su API.

Top comments (0)