モチベーション
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を起動し、リクエストとテスト、環境変数を書く
test.js
var jsonData = 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ファイルを読み込む
APIを叩く
collection runner のRun json-server ボタンをクリックすると実行が始まる
今回は、test-data.csvに5件分のパラメータを設定しているため、リクエストが5回実行される。
そのため、実行結果にIteration 1から5まで表示されていれば成功。
また、それぞれのイテレーションでテストがパスしていればOK。