Quantcast
Channel: Postmanタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 470

PostmanのCollection RunnerでWebAPIのテストを自動化する

$
0
0

はじめに

WebAPIを叩いて動作確認するときに、 Postmanを使っている方は多いと思います。
しかしながらWebAPIをパラメータを変更しながら挙動の変化を調べるテストを記述したい場合にどうすればいいでしょうか。

Tests タブにJavaScriptを書くやり方

テストしたいAPIのキーを追加し、 Testsタブにテスト内容をJavaScriptで記述するというやり方があります。
もちろんこのやり方で理屈上はテストを記述できるのですが、WebAPIをパラメータを変えながら何度も実行したい場合にいちいちパラメータを変更したJavaScriptを書いて順に実行するというのはあまりにも生産性が悪すぎます。

同じWebAPIをパラメータを変更しながら何度も実行する

Postmanでは COLLECTION RUNNERという仕組みがあり、指定したCollectionのWebAPIをパラメータを変更しながら順に実行することができます。パラメータは JSONまたはCSVが指定でき、 Data Fileのところで Select Fileボタンを押すことでローカルファイルを指定できます。

JSON形式も試してみましたが、記述内容が冗長になり手作業で必要な量の入力パターンを記述することが難しいと感じました。パラメータを変更しながら同じWebAPIを何度も実行したい場合は CSV形式がおすすめです。

COLLECTION RUNNERのCSVの内容

ここでいう CSVは以下のような意味を持ちます。

設定例:

ResourceVarBVarC
/productsa1
/usersb2
/purchasesc3

意味:

  • 1行目:
    • 各カラムは Collection変数
  • 2行目以降:
    • 各カラムはCollection変数の値

Collection変数と何でしょうか。みなさんはPostmanを運用するときにWebAPIの実行環境を切り替えたりするために Environment変数を設定していると思います。Collection変数はEnvironment変数と同じで、WebAPIに プレースホルダを書くと実行時に置き換えてくれます。

例えば URI:

と指定したWebAPIがCollectionの中に書いてあるとしましょう。
このWebAPIを実行すると、 Resource='/products' の場合は

に置き換えられます。これはURL欄だけでなく、HeadersやBodyタブでも同様に展開されます。

Environment変数との違いは変数の寿命で、Collection変数は COLLECTION RUNNER実行時のみ有効で、実行するたびに初期化されます。

例えば

と設定している場合、 COLLECTION RUNNERで上に書いたCSVを指定して実行すると、以下のAPIが順に実行されます。

これで 一気にWebAPIを3個実行できるようになりました。もちろん50行書けば50回です。

WebAPIのバリデーションチェック用の自動テスト例

私の場合、開発現場ではWebAPIのバリデーションチェック、および登録、更新、削除を順に実行した生成破壊テストをPostmanで記述しています。

バリデーションチェック用の場合、各WebAPIについてバリデーションエラーが発生するパターンを網羅的に実行することになります。

例えば WebAPIの Bodyをこのように記述しておくことで、色々なテストをCSVだけで記述できるようになります。

{ {{prefix}} {{param}}:{{value}} {{suffix}} }

prefixにはWebAPIの必須パラメータを固定で入れておきます。
paramはそのCSVレシピの行で動作確認したいJSONパラメータ。
valueは入力エラーとなるような入力値を指定します。
suffixは通常空欄で良いですが、paramが JSONのサブオブジェクトの場合は }などの終端記号をここに書きます。

注意すべきは valueの扱いで、プレースホルダはCSVに書かれているとおりに置き換えられるため、

{ param1:"abc" }

などと指定したい場合は、 valueは abc ではなく "abc" と入力する必要があります。つまりCSV上では """abc""" です。

色々と応用が効くと思うので試してみてください。


Viewing all articles
Browse latest Browse all 470

Trending Articles