PostmanでのAssertスクリプト作成 – APIテスト自動化への第一歩

APIテストを始める際、多くの人はPostmanでリクエストを送信し、結果を目で確認します。この方法は短時間のテストには問題ありませんが、システムが何度もデプロイされ、再テスト(リグレッションテスト)が必要になる場合、手動での確認は時間がかかり、見落としが発生しやすくなります。

Postmanでテストスクリプトを書くことで、テストプロセスを自動化できます。Postmanはリクエストを送信し、新しいデータを作成し、必要な情報を保存し、返ってきたデータが正しいかを確認して、PASS/FAILを即座に表示できます。これにより時間を節約でき、エラーの見落としを減らし、次のステップであるAPI自動化テストやCI/CDでの実行に備えることができます。

PostmanにおけるTestsとは リクエストにスクリプトを追加して、変数を操作したり、リクエスト間でデータを受け渡したり、テストを作成したりすることができます。Pre-request Scriptタブに追加したコードはリクエストが送信される前に実行され、Testsタブに追加したコードはレスポンスを受け取った後に実行されます

Testsは、レスポンスを受け取った後に実行されるJavaScriptで書かれたスクリプトです。Testsは個別のリクエストの一部として実行することも、複数のリクエストに対してまとめて実行することも可能です。

Postmanアプリケーションでは、画面上部のリクエストビルダーにTestsタブがあり、ここにテストスクリプトを記述します。画面下部のレスポンスビューアにはTest Resultsタブがあり、実行結果を確認できます。

テストケースを素早く作成するために、よく使われるコードスニペットがテストエディタの横に一覧表示されています。スニペットを選択するとコードがテストエディタに挿入されます。必要に応じて、レスポンスに対する具体的なアサーションを追記し、リクエストを送信すると、下部でテスト結果を確認できます。

実例フロー

この例では、次のフローを実践します:新しい予約を作成 (POST) → 予約リストを確認 (GET) – 作成した予約が表示されていることを確認 → 予約の詳細を確認 (GET) – 返却データが送信データと一致していることを確認。この記事では、特に POST /booking の Testsタブ にスクリプトを記述する部分に焦点を当てます。

ステップ1 – レスポンスをJSONに変換

新しい予約を作成するAPIを呼び出し、レスポンスを受け取ったら、各フィールドにアクセスしやすくするためにJSONに変換します。

// APIレスポンスを取得してJSONに変換

const getResponse = pm.response.json();

// APIレスポンスの例:

{

  “booking”: {

    “firstname”: “John”,

    “lastname”: “Doe”,

    “totalprice”: 120

  }

}
注意: pm.response.json() はレスポンスがJSON形式の場合にのみ有効です。

ステップ2 – ドット表記で値を取得

JSONをパースした後は、ドット表記を使って子フィールドに直接アクセスできます。

// JSONから値を取得

const firstName = getResponse.booking.firstname;

const lastName = getResponse.booking.lastname;

const totalPrice = getResponse.booking.totalprice;

// コンソールに出力して確認

console.log(“Firstname:”, firstName);   // John

console.log(“Lastname:”, lastName);     // Doe

console.log(“Totalprice:”, totalPrice); // 120

ドット表記を使うことで、ループや複雑な処理をせずにフィールドに直接アクセスできます。

ステップ3 – 値を確認するアサーションの作成

返却された値を自動でチェックするには、pm.test と pm.expect を組み合わせて使用します。

pm.test(“firstnameがJohnであることを確認”, function () {

    pm.expect(firstName).to.eql(“John”);

});

pm.test(“lastnameがDoeであることを確認”, function () {

    pm.expect(lastName).to.eql(“Doe”);

});

pm.test(“totalpriceが120であることを確認”, function () {

    pm.expect(totalPrice).to.eql(120);

});

結果の説明:

  • 値が正しい場合 → Test PASS
  • 値が異なる場合 → Test FAIL、Postmanがエラーを表示します

Postmanでテストスクリプトを書くことで、手動テストを自動化テストに変換でき、時間を節約し、リグレッションテストの信頼性を向上させることができます。これは、実際のAPI自動化テストに進むための基礎的なステップです。

参考:
http://blog.getpostman.com/2017/10/25/writing-tests-in-postman/