APIテストでよく使われるPostmanのPre-requestとPost-response。これらを適切に使いこなすと、テストの自動化や効率化が大幅に向上します。この記事では、リクエスト前とレスポンス後に実行できる便利なスクリプト例をまとめました。
1.Pre-requestの便利なスクリプト例
Pre-requestは、リクエストが送信される前に実行されるスクリプトです。リクエスト前に必要なデータを動的に生成したり、変数を設定するのに役立ちます
JWTトークンの自動生成
APIに認証が必要な場合、Pre-requestでJWTトークンを毎回生成してリクエストに追加することができます。
const header = {
"alg": "HS256",
"typ": "JWT"
};
const payload = {
"sub": "user@example.com",
"name": "John Doe",
"admin": true
};
const secret = "your-256-bit-secret";
const token = jwt.sign(payload, secret, { algorithm: 'HS256', header: header });
pm.environment.set("jwt_token", token);
現在のタイムスタンプを設定
リクエストに時間依存のデータが必要な場合、Pre-requestで動的にタイムスタンプを生成し利用することが可能です。
var timestamp = Math.floor(Date.now() / 1000);
pm.environment.set("current_timestamp", timestamp);
ランダムなデータの生成
ランダムなデータを生成して、テストデータとして使用する場合に便利です。
// ランダムな文字列
var randomString = Math.random().toString(36).substring(7);
pm.environment.set("random_string", randomString);
// ランダムなUUID
const uuid = require('uuid');
pm.environment.set("random_uuid", uuid.v4());
2.Post-responseの便利なスクリプト例
Post-responseは、リクエストのレスポンスを受け取った後に実行されるスクリプトです。レスポンスデータやステータスコードの検証を行うのに適しています。
ステータスコードの確認
レスポンスが正しいステータスコードを返しているかどうかを確認する基本的なスクリプトです。
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
レスポンスデータの検証
レスポンスに含まれる特定のフィールドや値が期待通りかをチェックできます。
pm.test("Response has user_id", function () {
var jsonData = pm.response.json();
pm.expect(jsonData).to.have.property('user_id');
});
レスポンスデータを次のリクエストに利用する
レスポンスから特定の値を抽出し、環境変数に保存することで、後続のリクエストでその値を利用できます。
var jsonData = pm.response.json();
pm.environment.set("user_id", jsonData.user_id);
レスポンスタイムの確認
レスポンスが一定の時間以内に返されるかどうかをテストします。
pm.test("Response time is less than 500ms", function () {
pm.expect(pm.response.responseTime).to.be.below(500);
});
3. Pre-requestとPost-responseの使い分け
- Pre-requestは、リクエストが送信される前にトークンの生成や変数の設定を行うために利用します。リクエストの準備段階で動的なデータを生成したいときに便利です。
- Post-responseは、レスポンス後にその内容が期待通りであるかを検証するために利用します。ステータスコードやレスポンスデータのチェック、データの保存などが主な用途です。
4. 使い分けのポイント
PostmanでAPIテストを行う際には、Pre-requestとPost-responseを組み合わせることで、テストの準備と検証を効率的に行うことができます。Pre-requestではリクエスト前のデータ準備を自動化し、Post-responseではレスポンスの正確性やパフォーマンスを検証できます。
目的 | Pre-request | Post-response |
---|---|---|
リクエスト前にトークンやデータを生成する | ✔ | ✘ |
環境変数やグローバル変数を設定する | ✔ | ✘ |
ランダムなデータを生成する | ✔ | ✘ |
リクエスト後にレスポンスを検証する | ✘ | ✔ |
レスポンスのデータを変数に保存する | ✘ | ✔ |
APIのパフォーマンステストを行う | ✘ | ✔ |