Echolot
Línea de comandos y CI

echolot run

Ejecuta un espacio de trabajo, algunas de sus carpetas o solicitudes, o una colección de Postman, con comprobaciones, archivos de datos e informes.

echolot run envía las solicitudes de un espacio de trabajo en su orden, ejecuta sus scripts y comprobaciones e informa de lo que se superó. Es la página Ejecución sin la ventana, pensada para CI. También ejecuta una colección de Postman tal cual, sin importarla.

echolot run [<options>] <source>

<source> es una carpeta de espacio de trabajo (la que contiene workspace.toml) o un archivo de colección de Postman.

Ejecutar un espacio de trabajo

echolot run Alpenglow.echolot --folder auth/sign-in --folder catalog
catalog, auth/sign-in

✓ POST   auth/sign-in  200 150 ms
    ✓ Status equals 200
    ✓ JSON value $.access_token exists
✓ GET    catalog/list-products  200 74 ms
    ✓ Status equals 200
    ✓ JSON value $.items.length is greater than 0
    ✓ Header Content-Type contains json
    ✓ Response time (ms) is less than 1000
✓ GET    catalog/search  200 69 ms
    ✓ Status equals 200
✓ GET    catalog/get-product  200 70 ms
    ✓ Status equals 200
    ✓ JSON value $.sku equals {{productId}}
✓ GET    catalog/categories  200 73 ms
    ✓ Status equals 200
✓ GQL    catalog/search-products  200 37 ms
✓ GET    catalog/export  200 410 ms
    ✓ Status equals 200

All 7 requests passed  11/11 checks passed · 0.90 s
  • Sin --folder, se ejecuta todo. --folder acepta una carpeta (catalog) o una solicitud (auth/sign-in), como rutas de slugs bajo requests/, y se puede indicar más de una vez. Las solicitudes se ejecutan en el orden del espacio de trabajo.
  • --env acepta el nombre de archivo del entorno sin .toml (staging) o su nombre (Staging).
  • Cuentan las comprobaciones de cada solicitud y sus resultados de pm.test. Una solicitud falla cuando no obtiene respuesta o una comprobación falla; entonces la ejecución sale con 1.
  • Las respuestas capturadas en variables, los tokens de las credenciales de cliente de OAuth 2 y los valores que fijan los scripts pasan a las solicitudes siguientes de la ejecución, como en la app. Los valores de los scripts duran solo lo que dura la ejecución y nunca se escriben en archivos.

Sin llavero (en CI, en Linux o con ECHOLOT_KEYCHAIN=0), una captura de respuesta en una variable secreta no se conserva para la solicitud siguiente. En Alpenglow, Sign in captura {{token}} como secreto, así que Who am I y la carpeta Orders reciben un 401 en una ejecución así. Fija tú mismo ECHOLOT_SECRET_TOKEN, o captura en una variable que no sea secreta, para ejecuciones como esta.

Ejecuciones guiadas por datos

--data ejecuta todo una vez por cada fila de un archivo de datos:

  • Un archivo CSV con una fila de encabezado: cada columna es una variable de su fila.
  • Un archivo JSON con un array de objetos: cada clave es una variable.
echolot run Alpenglow.echolot --folder catalog/get-product --data skus.csv
catalog/get-product · skus.csv, 2 rows

✓ #1 GET    catalog/get-product  200 133 ms
    ✓ Status equals 200
    ✓ JSON value $.sku equals {{productId}}
✓ #2 GET    catalog/get-product  200 88 ms
    ✓ Status equals 200
    ✓ JSON value $.sku equals {{productId}}

All 2 requests passed  4/4 checks passed · 0.22 s

Los scripts leen la fila con pm.iterationData. Sin un archivo de datos, --iterations repite la ejecución. --concurrency ejecuta esa cantidad de iteraciones en paralelo; lo que fijan los scripts de una iteración es solo de esa iteración.

Informes

--reporter elige un informe y se puede indicar más de una vez. --out da el nombre del archivo de cada informe que no es console, en el orden de las opciones --reporter; un informe sin archivo va a la salida estándar.

ReporterQué escribe
consoleLas líneas de arriba, con color en un terminal. El valor predeterminado cuando no indicas --reporter.
junitXML de JUnit: una suite de pruebas por solicitud, un caso de prueba por comprobación. Lo leen casi todos los sistemas de CI.
jsonToda la ejecución como JSON: cada solicitud con su estado, tiempo, tamaño, intentos y el resultado de cada comprobación.
htmlUn informe para abrir en un navegador.
harCada intercambio de la ejecución como HTTP Archive.
echolot run Alpenglow.echolot --env staging \
  --reporter console \
  --reporter junit --out results.xml \
  --reporter html --out report.html

Un informe JUnit de una ejecución con una comprobación fallida:

<?xml version="1.0" encoding="UTF-8"?>
<testsuites name="Alpenglow" tests="4" failures="1" errors="0" time="0.377" timestamp="2026-11-01T09:23:04Z">
  <testsuite name="auth/sign-in" tests="2" failures="0" errors="0" skipped="0" time="0.155">
    <testcase name="Status equals 200" classname="auth.sign-in" time="0"/>
    <testcase name="JSON value $.access_token exists" classname="auth.sign-in" time="0"/>
  </testsuite>
  <testsuite name="auth/who-am-i" tests="1" failures="1" errors="0" skipped="0" time="0.083">
    <testcase name="Status equals 200" classname="auth.who-am-i" time="0">
      <failure message="expected “200”, got “401”" type="AssertionFailure"/>
    </testcase>
  </testsuite>
</testsuites>

Todos los informes enmascaran los valores secretos, en URLs, cabeceras, mensajes de comprobaciones y registros, así que un informe se puede conservar sin problema como artefacto de CI.

Ejecutar una colección de Postman

echolot run shop.postman_collection.json --env-file staging.postman_environment.json --data users.csv

La colección se ejecuta tal cual: Echolot la lee en un espacio de trabajo temporal que se desecha después, y sus credenciales se quedan en memoria. Se ejecutan sus scripts previos a la solicitud y de pruebas, como en Newman. --env-file acepta un archivo de entorno de Postman; --env es para espacios de trabajo. --folder puede nombrar una carpeta de la colección sin la carpeta superior de la propia colección.

Para seguir trabajando con una colección, impórtala en su lugar.

Opciones

OpciónSignificado
-e, --env <env>El entorno: el nombre de su archivo sin .toml, o su nombre.
--env-file <file>Un archivo de entorno de Postman para usar con una colección.
--folder <path>Una carpeta o solicitud que ejecutar, como users o users/list-users. Repetible; todo si se omite.
-d, --data <file>Un archivo CSV con fila de encabezado o un array JSON de objetos: una iteración por fila.
-n, --iterations <n>Cuántas veces ejecutar todo, sin archivo de datos. Predeterminado 1.
--delay <ms>Milisegundos de espera entre solicitudes. Predeterminado 0.
--retries <n>Intentos adicionales para una solicitud que falla. Predeterminado 0.
--bailSe detiene en la primera solicitud fallida.
--concurrency <n>Cuántas iteraciones se ejecutan en paralelo; 1 las ejecuta una tras otra. Predeterminado 1.
--reporter <name>console, junit, json, html o har. Repetible; console si se omite.
-o, --out <file>El archivo de cada reporter que no es de consola, en el orden de --reporter; la salida estándar si falta.
--secrets <file>Un archivo de líneas NAME=value con valores secretos, además de las variables ECHOLOT_SECRET_<NAME>.
-k, --insecureOmite la verificación del certificado TLS.
--proxy <url>Envía a través de este proxy: http://host:port, https://…, socks5://user:password@host:port.
--no-proxySe conecta directamente, ignorando HTTP_PROXY y las demás.
--cacert <file>Confía además en los certificados de CA de este archivo PEM. Repetible.
--cert <file>Envía este certificado de cliente: un archivo PEM (con --key) o un archivo .p12/.pfx.
--key <file>La clave privada PEM del certificado de cliente, cuando el archivo del certificado no la tiene.
--pass <passphrase>La frase de contraseña de la clave o del archivo PKCS#12. Es mejor ECHOLOT_CERT_PASSPHRASE.
--timeout <seconds>Tiempo de espera de cada solicitud. Predeterminado 60.
--no-colorSalida de consola sin formato. También cuando NO_COLOR está definida o la salida no es un terminal.

Códigos de salida

CódigoCuándo
0Todas las solicitudes obtuvieron respuesta y todas las comprobaciones se superaron.
1Una solicitud falló: no hubo respuesta, o una comprobación falló.
64Una opción incorrecta, un origen que no es ni un espacio de trabajo ni una colección de Postman, un entorno desconocido o un archivo de datos sin filas.

Mira CI para ver pipelines completos y secretos para saber de dónde salen los valores secretos.

En esta página