echolot run
ワークスペース、その一部のフォルダやリクエスト、またはPostmanコレクションを、チェック、データファイル、レポート付きで実行します。
echolot run は、ワークスペースのリクエストを順番に送信し、スクリプトとチェックを実行して、何が成功したかを報告します。
ランナーからウインドウを取り除いたもので、CI向けに作られています。Postmanコレクションも、読み込まずにそのまま実行できます。
echolot run [<options>] <source><source> は、ワークスペースのフォルダ(workspace.toml があるフォルダ)か、Postmanコレクションのファイルです。
ワークスペースを実行する
echolot run Alpenglow.echolot --folder auth/sign-in --folder catalogcatalog, 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--folderを指定しない場合は、すべてが実行されます。--folderにはフォルダ(catalog)またはリクエスト(auth/sign-in)を、requests/以下のスラッグのパスで指定し、 複数回指定できます。リクエストはワークスペースの順序で実行されます。--envには、環境のファイル名から.tomlを除いたもの(staging)か、環境の名前(Staging)を指定します。- 各リクエストのチェックと
pm.testの結果が集計されます。リクエストは、レスポンスがない場合やチェックが失敗した場合に失敗となり、実行は終了コード1で終わります。 - 変数にキャプチャされたレスポンス、OAuth 2のクライアント認証情報で取得したトークン、スクリプトが設定した値は、アプリと同じように、実行中の後続のリクエストに引き継がれます。 スクリプトの値はその実行の間だけ有効で、ファイルに書き込まれることはありません。
キーチェーンがない場合(CI、Linux、ECHOLOT_KEYCHAIN=0 の場合)、シークレット変数へのレスポンスのキャプチャは、次のリクエストに引き継がれません。
Alpenglowでは、Sign in が {{token}} をシークレットとしてキャプチャするため、このような実行では Who am I とOrdersフォルダが401になります。
このような実行では、ECHOLOT_SECRET_TOKEN を自分で設定するか、シークレットではない変数にキャプチャしてください。
データ駆動の実行
--data を指定すると、データファイルの行ごとに1回ずつ、すべてを実行します。
- ヘッダー行のあるCSVファイル:各列が、その行の変数になります。
- オブジェクトの配列を含むJSONファイル:各キーが変数になります。
echolot run Alpenglow.echolot --folder catalog/get-product --data skus.csvcatalog/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スクリプトは pm.iterationData で行を読み取ります。データファイルがない場合は、--iterations で実行を繰り返します。--concurrency は、指定した数の反復を並行して実行します。
1つの反復のスクリプトが設定した値は、その反復の中にとどまります。
レポート
--reporter はレポートを選び、複数回指定できます。--out は、console 以外の各レポートのファイル名を、--reporter オプションの順に指定します。ファイルのないレポートは標準出力に書き出されます。
| レポーター | 書き出す内容 |
|---|---|
console | 上のような行。ターミナルでは色付きです。--reporter を指定しない場合のデフォルトです。 |
junit | JUnit XML:リクエストごとに1つのテストスイート、チェックごとに1つのテストケース。ほとんどのCIシステムが読み取れます。 |
json | 実行全体をJSONで:すべてのリクエストと、そのステータス、所要時間、サイズ、試行回数、各チェックの結果。 |
html | ブラウザで開くレポート。 |
har | 実行中のすべてのやり取りを、HTTP Archiveとして書き出します。 |
echolot run Alpenglow.echolot --env staging \
--reporter console \
--reporter junit --out results.xml \
--reporter html --out report.htmlチェックが失敗した実行のJUnitレポートです。
<?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>どのレポートも、URL、ヘッダー、チェックのメッセージ、ログに含まれるシークレットの値をマスクするので、レポートをCIのアーティファクトとして保存しても安全です。
Postmanコレクションを実行する
echolot run shop.postman_collection.json --env-file staging.postman_environment.json --data users.csvコレクションはそのまま実行されます。Echolotはコレクションを一時的なワークスペースに読み込み、実行後に破棄します。認証情報はメモリ上にのみ残ります。
リクエスト前スクリプトとテストスクリプトは、Newmanと同じように実行されます。--env-file にはPostmanの環境ファイルを指定します。--env はワークスペース用です。
--folder には、コレクション自身のトップフォルダを除いた、コレクション内のフォルダ名を指定できます。
コレクションを引き続き使うには、代わりに読み込んでください。
オプション
| オプション | 意味 |
|---|---|
-e、--env <env> | 環境:ファイル名から .toml を除いたもの、または環境の名前。 |
--env-file <file> | コレクションと併用するPostmanの環境ファイル。 |
--folder <path> | 実行するフォルダまたはリクエスト(users、users/list-users など)。複数回指定できます。省略するとすべて実行します。 |
-d、--data <file> | ヘッダー行のあるCSVファイル、またはオブジェクトのJSON配列:1行につき1反復。 |
-n、--iterations <n> | データファイルがない場合に、すべてを何回実行するか。デフォルトは1。 |
--delay <ms> | リクエスト間に待機するミリ秒数。デフォルトは0。 |
--retries <n> | 失敗したリクエストの追加試行回数。デフォルトは0。 |
--bail | 最初に失敗したリクエストで停止します。 |
--concurrency <n> | 並行して実行する反復の数。1は順番に実行します。デフォルトは1。 |
--reporter <name> | console、junit、json、html、har。複数回指定できます。省略すると console。 |
-o、--out <file> | コンソール以外の各レポーターのファイル。--reporter の順に指定します。ない場合は標準出力。 |
--secrets <file> | シークレットの値を書いた NAME=value 行のファイル。ECHOLOT_SECRET_<NAME> 変数に加えて使います。 |
-k、--insecure | TLS証明書の検証をスキップします。 |
--proxy <url> | このプロキシ経由で送信します:http://host:port、https://…、socks5://user:password@host:port。 |
--no-proxy | HTTP_PROXY などを無視して直接接続します。 |
--cacert <file> | このPEMファイル内のCA証明書も信頼します。複数回指定できます。 |
--cert <file> | このクライアント証明書を送信します:PEMファイル(--key と併用)または .p12/.pfx ファイル。 |
--key <file> | クライアント証明書のPEM秘密鍵。証明書ファイルに鍵が含まれていない場合に使います。 |
--pass <passphrase> | 鍵またはPKCS#12ファイルのパスフレーズ。ECHOLOT_CERT_PASSPHRASE の使用をおすすめします。 |
--timeout <seconds> | 各リクエストのタイムアウト。デフォルトは60。 |
--no-color | 装飾なしのコンソール出力。NO_COLOR が設定されている場合や、出力がターミナルでない場合も同様です。 |
終了コード
| コード | 条件 |
|---|---|
0 | すべてのリクエストがレスポンスを受け取り、すべてのチェックに合格しました。 |
1 | リクエストが失敗しました:レスポンスがない、またはチェックの失敗。 |
64 | オプションが正しくない、ワークスペースでもPostmanコレクションでもないソース、不明な環境、または行のないデータファイル。 |