Outline
APIのテストを行う場合、SoapUIやPostManといった、APIに特化したテスト自動化ツールが存在する。
ただ、WebのUIと連携して、例えばデータ更新の結果をAPI経由で検証したいとき、APIを混在させてテストしたいケースもある。
T-DASHはUIのテストに強いテスト自動化ツールである。しかし、カスタム動作を用いることで、APIのテストを合わせて行うことが可能になる。
技術的な情報
robot frameworkのAPIを用いたテストを行うライブラリとして、RESTinstanceがある。このkeywordを用いて値の取得や更新、そしてAPIで取得した結果(多くはXMLかJSON)を検証することができる。
主に使うkeywordとして以下のものがある
種類 | keyword | 内容 |
---|---|---|
リクエスト | GET | get形式でAPIにリクエストする |
リクエスト | POST | post形式でAPIにリクエストする |
検証 | Object | APIの結果のJSONに関する検証する |
検証 | Integer | APIの結果で整数に関する検証する |
検証 | String | APIの結果で文字列に関する検証する |
テスト対象
楽天は、ユーザーが使えるウェブサービスとしてAPIを提供している。
今回、シンプルにトラベル施設検索の結果から検索結果数を変数として取り出し、テストケースにてつかうテストを想定する。
尚、楽天ウェブサービスを使う場合、menuのnew appから、application idを取得する必要がある。
APIでこのidが求められる。
APIの結果、bodyに以下JSONが出力される。
このJSONから、recordCountの値、下図の例では72を取り出す。
T-DASH
カスタム動作
API.yaml で、以下内容を保存する
ACT-CAT-CUSTOM-5ffd6219-579c-47d4-9325-75a203bc6888:
action_category_name: API
icon: ''
color: '#b9d4b8'
custom_data:
file_name: API
pip_list:
- RESTinstance
library_list:
- REST
actions:
ACT-CUSTOM-1a0b0841-8c40-4242-9087-4fd06b2a065f:
action_name: 楽天トラベル施設検索結果数
action_type: operation
action_format: 緯度,経度 =(「設定値1」,「設定値2」) 半径「設定値3」kmで検索
action_note: ''
action_args:
- value1
- value2
- value3
action_def:
- - '${applicationId} = '
- Set Variable
- xxxxxxxxxx
- - GET
- https://app.rakuten.co.jp/services/api/Travel/SimpleHotelSearch/20170426?applicationId=${applicationId}&format=json&latitude=${value1}&longitude=${value2}&searchRadius=${value3}
- - Integer
- response status
- '200'
- - Object
- response body
- - ${json} =
- Object
- response body
- required=["pagingInfo", "hotels"]
- - '${recordCount} = '
- Set Variable
- ${json[0]['pagingInfo']['recordCount']}
- - Log
- search result count is ${recordCount}
次に、作成されたChromeOpti.yamlをT-DASHの動作定義 -> カスタム動作 -> カスタム動作をインポート にてインポートし、実際にインポートされた設定内容を開く
テストケース
カスタム動作を呼び出すと、APIをCALLし、検索結果数を取り出す。
カスタム動作の設定値1~3は以下のとおりである
引数 | 意味 |
---|---|
設定値1 | 緯度 |
設定値2 | 経度 |
設定値3 | 半径 (km) |