LoginSignup
69
60

More than 5 years have passed since last update.

進化したPostmanでAPIをテストする

Posted at

前回のエントリーでざっと機能を紹介したので、このエントリーではサンプルアプリケーションを使って実際にテストを行ってみます。

サンプルアプリケーションの仕様

Ruby on Railsで簡単なユーザ管理のAPIを作ります。

リソース メソッド 用途 備考
/users GET ユーザ情報一覧の取得 -
/users POST ユーザ情報の作成 -
/users/signin POST ユーザでログイン -
/users/signout POST ユーザでログアウト -
/users/:id GET ユーザ情報の取得 要ログイン
/users/:id PUT ユーザ情報の変更 要ログイン
/users/:id DELETE ユーザ情報の変更 要ログイン

環境変数の設定

一連のテストで変数を使用する場合、変数名の定義が必要でした。
環境変数は画面右上から登録します。

Kobito.JcJaHK.png

Kobito.cClaNO.png

この後のテストでtokenという変数を使いたいので、変数名の定義だけしておきます。

Kobito.CpC7fB.png

テスト

勢い余ってAPIの仕様をたくさん考えてしまいましたが、ひとまず以下の3パターンのテストをしてみます。

ユーザ情報の登録

アカウントの新規作成にあたる機能です。
Bodyにemailとpasswordパラメータをセットします。

Kobito.Kd3oDA.png

Testsタブに以下のテストコードを記述します。
レスポンスにemailが返されるので、bodyをjsonにしてemailが一致することを確認します。
tests[]の中の文字列はテストケース名になります。

var data = JSON.parse(responseBody);
tests["it has email"] = data.email === "user01@example.com";

Sendを押して実行します。

テストの結果はレスポンスエリアのTestsタブで確認します。
成功の場合はTests(1/1)、失敗の場合はTests(0/1)になりました。

Kobito.G6JgJZ.png

Kobito.hw9zXS.png

ログイン

先程と同様のemailとpasswordでログイン(signin)します。

Kobito.Kb5gds.png

Testsタブには、tokenが返却されることと、そのtokenを次のリクエストで使用できるように変数にセットしておきます。

var data = JSON.parse(responseBody);
tests["it has token"] = data.token;

postman.setEnvironmentVariable("token", data.token);

signinが成功し、tokenが返るとTestsが成功します。

ユーザ情報の取得

ユーザ情報の取得にはログイン(signin)が必要という仕様なので、リクエストのパラメータでtokenを渡します。
tokenがあればユーザの情報を返し、なければ何も返さないことをテストします。おな、このサンプルアプリケーションではtokenの正当性はチェックしていません。

変数は、{{変数名}}で参照することができます。
GETリクエストの場合、URLで変数を参照することも可能です。

Kobito.lOctEI.png

Testsにはjsonデータが返ることを確認します。

var data = JSON.parse(responseBody);
tests["it has json body"] = data;

tokenがない場合のテストは、Pre-request scriptタブで、tokenの値を空にしてからリクエストします。

postman.setEnvironmentVariable("token", "");

Testsにはjsonデータが返らないことを確認します。

var data = JSON.parse(responseBody);
tests["it has none data"] = data === null;

まとめてテストする

画面上部のRunnerボタンをクリックするとRunner Collectionが起動します(ここは有料($9.99)ですが、14日間のFreeTrialがあります)。Runner CollectionはCollectionのTestをまとめて実行します。

CollectionとEnviromentを選択し、Delayを設定します。

Kobito.7eXue4.png

実行されると、テスト結果が下のように表示されます。

Kobito.Pm4yW4.png

まとめ

テストスクリプトや変数を使用することで、ある程度は柔軟にテストが出来ました。もちろんこの程度ならRspecなどのテストフレームワークを使うほうが断然楽ですが、提供されたAPIをテストする際のテストツールとしては使えるのではないでしょうか。

今回使った以外にもたくさんの機能はありますし、Postmanの開発チームはもっと広範囲にAPIの開発をサポートするツールを目指しているようなので、今後どうなっていくか楽しみです。

使用したソース・テストデータ

サンプルアプリケーションのソース

bisque33/sample_user_api

Postmanのテストデータ

Postmanを起動し、ImportからURLを指定することでテストデータを取り込むことができます。

参考

69
60
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
69
60