web-dev-qa-db-ja.com

POSTMANで2つの要求の間に一時停止を追加する方法

POSTMANにリクエストのコレクションがあります。 2つのリクエストの間に一時停止を追加したかったのですが、ドキュメントを読んでそれを行う方法が見つかりませんでした。何か案が?

[〜#〜] update [〜#〜]コレクション内のすべてのリクエストの後にではなく、1つのリクエストの後にだけ一時停止したい。

16
RoundOutTooSoon

誰かがまだこれを探している場合-使用できるコレクション内の多くのテストの1つの後/前に遅延を追加できます。

setTimeout(function(){}, [number]);

ここで、「数値」はミリ秒です。 「テスト」で追加された場合、リクエストの送信後に実行されます。 「リクエスト前のテスト」で追加された場合、リクエストが送信される前に実行されます。

14
Ivo Chipev

私はこれを行う2つの可能な方法を知っています

方法I

リクエストをコレクションとして実行します。 ( https://www.getpostman.com/docs/collections )Newman(コマンドラインからのPostmanのコレクションランナー)を使用して、-delayフラグを使用してコレクションを実行します。遅延入力値はミリ秒単位です。

方法II

これは私がここで見つけた素晴らしいハックです https://github.com/postmanlabs/postman-app-support/issues/1038 。 Postmanでテストスクリプトに遅延関数を追加できます。

7
Netham

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] を使用します。

5
Siyu

このようなものを試してください-

if(jsonBody.responseCode=="SUCCESS"){

  setTimeout(function(){
          console.log("Sleeping for 3 seconds before next request.");
  }, 3000);

  postman.setNextRequest("nextAPI");

}
2
Mukul Bansal

オンラインサービスのPostman Echoの遅延エンドポイントを使用することを好みます(ドキュメントは here です)。このサービスを使用するリクエストを作成し、遅延を追加する他の2つのリクエスト間で呼び出します。

続行する前に何かのステータスを確認したい場合は、リクエストのTestspostman.setNextRequest()を使用して、何かが完了するまでループすることができます。次の手順を実行します。

1)次のような構造のコレクションを作成します。

  • 10秒間の遅延
  • 状態確認
  • 処理を続ける

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;
}
1
Nathan M

スタンドアロンの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();
1
xyz

JavaScriptのsetTimeoutメソッドを使用できます。これにより、指定された遅延後にメソッドが実行されるようになります。

enter image description here

  setTimeout(checkStatusCode, 500);

    function checkStatusCode() {

        pm.sendRequest('https://postman-echo.com/get', function (err, res) {

            tests['status code should be 200']= res.code ===200;

        });
    }
0
Amit

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

0
workabyte