🍎

PostmanのCollection Runnerを使い倒す

2023/02/23に公開

https://learning.postman.com/docs/running-collections/intro-to-collection-runs/

どういう記事か

PostmanのCollection Runnerとscriptsを使いこなして、APIの動作確認や統合テストに活かすための記事です。

まずはサンプルを試してみる

  • サンプルコレクションが用意されているのでそれを使ってとりあえず動かしてみる
  • 変数をimportするためのjsonもあるので、それをimportして変数を変えながら実行できることを動かして確認してみるといい

https://learning.postman.com/docs/running-collections/working-with-data-files/

WorkFlowを制御できる関数を使ってみる

上記サンプルを試してみるとわかるが、Runの時点で複数APIがあった場合は上から順に実行されるようになっている。これを制御できるpostman.setNextRequest()というものがある。

詳細は以下記事。

  • Pre-requestsかTestsの中で使える
  • Collection全体を実行する際にしか動かない。など

https://learning.postman.com/docs/running-collections/building-workflows/

デバッグの仕方

基本的にJSが動くのでconsole.logなどを使えばいい。

  • 下のバーに小さくConsoleとあるのでそこを広げて確認できるようになっている。

https://learning.postman.com/docs/sending-requests/troubleshooting-api-requests/#opening-the-console

  • 以下のようなlog出力関数が使える。
console.log()
console.info()
console.warn()
console.error()
  • logレベルを指定してフィルタリングすることもできる。

https://learning.postman.com/docs/sending-requests/troubleshooting-api-requests/#navigating-the-console

Scriptsを使ってもっと細かいことをしてみる

data・・・importしたファイルから読み込まれた値(環境変数)が入っている。

pm.response.json()・・・responseを取得できる。(例: pm.response.json().id

変数に格納

// local scopeのvaliablesをセット
pm.variables.set("id", 100)

// もっとも内側のscopeのvaliablesを取得する
pm.variables.get('score')

もっとも内側のscopeのvaliablesとは

環境変数に格納

使い勝手がいいが、実行完了後も環境変数に残るので注意。

pm.environment.set("id", 100)

使い方の例

  1. POST系APIの返り値をセット

    # Tests
    const createdId = pm.response.json().id
    pm.environment.set("id", createdId)
    postman.setNextRequest("GET API"); # GET系APIを次に実行する
    
  2. GETで使用する

    GET /user/{{id}

    # Tests
    postman.setNextRequest("DELETE Id API"); # DELETE系APIを次に実行する
    
  3. DELETEで使用する

    DELETE /user/{{id}

    # Tests
    postman.setNextRequest(null); # nullとするとここでCollection Runが終了する
    
  4. 上記を作成したらCollection Runを実行

    POST → GET → DELETEの順で一気に実行される。

使ってみた感想

うまく使いこなせれば動作確認テストの自動化とドキュメント化をPostmanにまとめることができて良さそうだなと思いました。

Discussion