Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
62
Help us understand the problem. What is going on with this article?
@bisque33

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

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

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

参考

62
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
bisque33
Rubyをよく使っていましたが、最近はスマホアプリを作るためJavaScriptを勉強中です。 投稿記事については自分の勉強メモで中途半端な内容も多いと思いますので、参考程度と考えてください。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
62
Help us understand the problem. What is going on with this article?