はじめに
Postmanはいいぞ
PostmanはAPI開発時に役立つツールです。無料で使い始めることができます。
- APIクライアント
- 自動テスト
- モックサーバ
などなど、API開発にあたってはお世話になる機能が揃っています。OAS(OpenAPI Specification)のファイルをインポートして、APIへのリクエストを自動的に生成してくれるのが非常に便利です。
APIのテスト
Postmanでは、APIへのリクエストを定義、保存しておくことができます。リクエストに対しては、テストを設定しておくこともでき、リクエスト送信時にテストも実行されます。
リクエストは複数まとめてCollection(第1階層)、Folder(第2階層以降)という単位で管理が可能です。Collection Runnerという機能で、Collection単位でテストを一斉に実行できます。
テストの書き方
リクエストのTestsタブから、このリクエストに対するテストを記述することができます。まずは、スニペットを使ってみるのがよいでしょう。発展的なテストを記述したいときなどは、Chai Assertion LibraryのAPI Referenceを参照するとよいです。
テスト例
// ステータスコードに対するテスト
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
// 応答時間に対するテスト
pm.test("Response time is less than 200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
// JSONの中身に対するテスト
var jsonData = pm.response.json();
pm.test("id=1, name=taro, age > 18 のJSONが返ってくる", () => {
pm.expect(jsonData.id).to.eql(1);
pm.expect(jsonData.name).to.eql("taro");
pm.expect(jsonData.age).to.gt(18);
});
// JSONのプロパティに対するテスト
pm.test("historyの中にはstudiesという配列型のプロパティがあり、要素が2つ以上存在する", () => {
pm.expect(jsonData.history).to.have.property("studies");
pm.expect(jsonData.history.studies).to.be.an("array");
pm.expect(jsonData.history.studies).to.be.not.empty;
pm.expect(jsonData.history.studies).to.have.lengthOf.at.least(2);
});
テストの実行
重複しますが、リクエストをSendすると同時にテストが実行されます。また、テストだけを一括して実行したい場合はRunnerを使ってCollectionやFolder単位でテストが可能です。
おわり
APIに対するテストを書いておくことで、仕様の明確化や、コード修正等に伴うデグレードを抑えることが可能です。また、今回は触れませんでしたがテスト環境や本番環境など、URLが異なる環境を事前に定義して素早く切り替えることが可能ですので、APIの開発する上では非常に頼りになるツールです。