POSTMANにリクエストのコレクションがあります。 2つのリクエストの間に一時停止を追加したかったのですが、ドキュメントを読んでそれを行う方法が見つかりませんでした。何か案が?
[〜#〜] update [〜#〜]コレクション内のすべてのリクエストの後にではなく、1つのリクエストの後にだけ一時停止したい。
誰かがまだこれを探している場合-使用できるコレクション内の多くのテストの1つの後/前に遅延を追加できます。
setTimeout(function(){}, [number]);
ここで、「数値」はミリ秒です。 「テスト」で追加された場合、リクエストの送信後に実行されます。 「リクエスト前のテスト」で追加された場合、リクエストが送信される前に実行されます。
私はこれを行う2つの可能な方法を知っています
方法I
リクエストをコレクションとして実行します。 ( https://www.getpostman.com/docs/collections )Newman(コマンドラインからのPostmanのコレクションランナー)を使用して、-delayフラグを使用してコレクションを実行します。遅延入力値はミリ秒単位です。
方法II
これは私がここで見つけた素晴らしいハックです https://github.com/postmanlabs/postman-app-support/issues/1038 。 Postmanでテストスクリプトに遅延関数を追加できます。
JavaScriptのビジー待機を使用するのは良い方法ですが、CPUが熱くなり、アプリが応答しなくなります。 postman-echoを使用してこのソリューションを見つけました。
Request_AとRequest_Bの間に長い遅延を追加するとします。
まず、Request_Aのテストスクリプトで、env varを設定して開始をマークします。
environment.delayTimerStart = new Date();
次に、作成時にGETリクエストを作成します(ここでは「遅延10秒」と呼びます)。 https://postman-echo.com/delay/1 でGETを行います(10秒後に戻ります)
テストスクリプトで、追加します
var curDate = new Date();
if (curDate - environment.delayTimerStart < delay_time_in_sec*1000) {
postman.setNextRequest('Delay 10s');
} else {
postman.setNextRequest("Request_B");
}
この方法で、任意の長さの遅延を追加できます。
注:10秒は、postman-echoが受け入れる最大値です。短い遅延が必要な場合は、単にGET https://postman-echo.com/delay/ [1〜10] を使用します。
このようなものを試してください-
if(jsonBody.responseCode=="SUCCESS"){
setTimeout(function(){
console.log("Sleeping for 3 seconds before next request.");
}, 3000);
postman.setNextRequest("nextAPI");
}
オンラインサービスのPostman Echoの遅延エンドポイントを使用することを好みます(ドキュメントは here です)。このサービスを使用するリクエストを作成し、遅延を追加する他の2つのリクエスト間で呼び出します。
続行する前に何かのステータスを確認したい場合は、リクエストのTests
でpostman.setNextRequest()
を使用して、何かが完了するまでループすることができます。次の手順を実行します。
1)次のような構造のコレクションを作成します。
2)Status Check
リクエストテスト:
if(responseBody.has("Success")) //or any other success condition
{
postman.setNextRequest('Continue Processing');
tests["Success found"] = true;
}
else
{
postman.setNextRequest('Delay For 10 Seconds');
tests["No success found"] = true;
}
スタンドアロンのPostmanアプリ(ES7をサポート)があり、Newman(ES7をサポートしない)ではなくPostmanのみでテストする場合、Request youのPre-Requestスクリプトでこのようなものを使用できます。遅らせたい:
function foo() {
return (new Promise((resolve, reject) => {
setTimeout(() => {
resolve("done!"); // passing argument is optional, can just use resolve()
}, 10000) // specify the delay time in ms here..
}))
}
async function waitForMe() {
await foo().then((val) => {
console.log(val); // not required, you can just do an await without then
})
}
waitForMe();
postman Runnerを使用している場合、現在のドキュメントを見る
遅延
これは、コレクション実行の各リクエスト間の間隔(ミリ秒単位)です。
https://www.getpostman.com/docs/postman/collection_runs/starting_a_collection_run
そして、あなたがニューマンを使用している場合
--delay-request [number] Specify a delay (in ms) between requests [number]
https://www.getpostman.com/docs/postman/collection_runs/command_line_integration_with_newman