Quantcast
Viewing all articles
Browse latest Browse all 470

Postmanでparameterized testをする

モチベーション

Postman でAPIを叩く際に、パラメータやリクエストボディにバリエーションを持たせて複数回実行したい場合があるので、なんとかしたい

この記事でやること

fake REST APIを作成し、それに対してGETを実行する(テストも書く)。
そのさい、.csvファイルでパラメータを複数個設定し、その分だけAPIを叩く。

今回の構成

手順

json-server をインストールする

npm install -g json-server

APIを叩いたときに取得するデータを、.jsonファイルとして作成する

db.json
{"posts":[{"id":1,"title":"json-server1","author":"typicode"},{"id":2,"title":"json-server2","author":"typicode"},{"id":3,"title":"json-server3","author":"typicode"},{"id":4,"title":"json-server4","author":"typicode"},{"id":5,"title":"json-server5","author":"typicode"}],"comments":[{"id":1,"body":"some comment","postId":1}],"profile":{"name":"typicode"}}

json-serverを起動する

db.jsonが保存されているディレクトリで、以下のコマンドを実行する

json-server --watch db.json

Postmanを起動し、リクエストとテスト、環境変数を書く

環境変数:
Image may be NSFW.
Clik here to view.
env.jpg

リクエストとテスト:
Image may be NSFW.
Clik here to view.
request_test.jpg

test.js
varjsonData=pm.response.json();pm.test("Status code is 200",function(){pm.response.to.have.status(200);});pm.test("idの値がリクエスト通りである",function(){pm.expect(jsonData.id).to.eql(parseInt(pm.iterationData.get("id")));});pm.test("titleの値がリクエスト通りである",function(){pm.expect(jsonData.title).to.eql(pm.iterationData.get("title"));});pm.test("authorの値がリクエスト通りである",function(){pm.expect(jsonData.author).to.eql(pm.iterationData.get("author"));});

テストデータを記載した.csvファイルを作成する

test-data.csv
id,title,author
1,json-server1,typicode
2,json-server2,typicode
3,json-server3,typicode
4,json-server4,typicode
5,json-server5,typicode

collection runnerで、.csvファイルを読み込む

Image may be NSFW.
Clik here to view.
runner1.jpg

Image may be NSFW.
Clik here to view.
runner2.jpg

APIを叩く

collection runner のRun json-server ボタンをクリックすると実行が始まる
Image may be NSFW.
Clik here to view.
result.jpg

今回は、test-data.csvに5件分のパラメータを設定しているため、リクエストが5回実行される。
そのため、実行結果にIteration 1から5まで表示されていれば成功。
また、それぞれのイテレーションでテストがパスしていればOK。

参考文献


Viewing all articles
Browse latest Browse all 470

Trending Articles