Posted at

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

More than 3 years have passed since last update.

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


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

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のテストデータ

https://www.getpostman.com/collections/ef2527a6d42a11db8f33

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


参考