モチベーション
Postman でAPIを叩く際に、パラメータやリクエストボディにバリエーションを持たせて複数回実行したい場合があるので、なんとかしたい
この記事でやること
fake REST APIを作成し、それに対してGETを実行する(テストも書く)。
そのさい、.csvファイルでパラメータを複数個設定し、その分だけAPIを叩く。
今回の構成
- Postman v8.0.6
- json-server
- windows 10
手順
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.
リクエストとテスト:
Image may be NSFW.
Clik here to view.
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.
Image may be NSFW.
Clik here to view.
APIを叩く
collection runner のRun json-server ボタンをクリックすると実行が始まる
Image may be NSFW.
Clik here to view.
今回は、test-data.csvに5件分のパラメータを設定しているため、リクエストが5回実行される。
そのため、実行結果にIteration 1から5まで表示されていれば成功。
また、それぞれのイテレーションでテストがパスしていればOK。