「Web APIコール」(図1)のコマンドを使うと、Web API(REST API)をテストスクリプト中で実行できます。
Web APIコールは、HTTPのGET・POST・PUT・DELETEメソッドの呼び出しに対応しています。
図1 「Web APIコール」コマンド
目次
- GETメソッド
- POST・PUT・DELETEメソッド
- ステータスコードの指定
- Headerのキーに「Content-Type」をセットする際の注意点
- URLアクセス時のIPアドレス
- Currently the cloud test run does not support webApi commandというエラーがでる場合
GETメソッド
例として、毎回異なるランダムなユーザー情報を図2のJSON形式で取得できるRANDOM USER GENERATORにアクセスしてみましょう。
説明を分かりやすくするため、図2では実際のAPIのレスポンスから情報を大幅に取り除いています。
{
"results": [
{
"name": {
"first": "levi",
"last": "jones",
}
}
]
}
図2 RANDOM USER GENERATORのJSONレスポンス
まず「編集」ボタンを押すと
開かれた編集ダイアログで、メソッドに「GET」、URLに「https://randomuser.me/api?format=json」を指定します。
そして図3の「結果」タブでは、変数にAPIのレスポンスの値をセットして、後続の処理で使えるようにします。「変数」列には変数名を、「Javascript」列にはセットするレスポンスの値を指定します。Javascript列中では、レスポンスの値をJSONオブジェクトとして参照することができます。具体的には、
- 「jsonResponse」はレスポンスボディを参照するJSONオブジェクト
- 「responseHeaders」はレスポンスヘッダーを参照するJSONオブジェクト
として利用可能です。「jsonResponse["results"]」や「responseHeaders["Set-Cookie"]」のようなJavascriptの記法で各項目にアクセスすることができます。
図3 HTTP GETメソッド呼び出し
変数にセットした値は、同じテストケースの後続のコマンドから、「${変数名}」で参照することができます。図3では変数LastNameにユーザーのラストネームを、変数FirstNameにユーザーのファーストネームをセットしたので、これを使って図4のようにランダムなユーザー名を入力エリアにセットすることができます。
図4 変数を使ってHTTPレスポンスの値を利用
- 保存した変数は同一のテストケース内でのみ有効です。他のテストケースで利用することはできません。
- HTTPリクエストのヘッダーを指定したい場合は、図3のダイアログの「ヘッダー」タブで指定します。
- GETメソッドのクエリパラメータは、URLの後ろに「?<キー1>=<値1>&<キー2>=...」の形式で指定します。
POST・PUT・DELETEメソッド
メソッド名・URL・ヘッダー・レスポンスの指定方法については、GETメソッドの場合と同様です。
また、POST・PUT・DELETEメソッドの場合は、図5のように「ボディ」タブでリクエストのボディを指定することができます。ボディの値は、「フォームデータ形式」(POSTメソッドのみ)か「rawデータ形式」(テキスト形式)かを選ぶことができます。
図5 HTTP POSTメソッド呼び出し
ステータスコードの指定
「結果」タブにおいて、HTTPレスポンスの期待されるステータスコードを指定することができます。これにより、APIコールがエラーレスポンスを返却する場合にもテストを実行することができます。
「デフォルト」では、200などの成功ステータスの場合にWeb APIコールが成功とみなされます。
「指定した値」を選択すると、期待されるステータスコードが実際のレスポンスステータスと一致する場合にWeb API コールが成功とみなされます。
Headerのキーに「Content-Type」をセットする際の注意点
ContentとTypeの頭文字が小文字の場合、400 BadRequestエラーで失敗することがあります。ContentとTypeの頭文字を大文字にしてください。
OK: Content-Type
NG: content-type, Content-type, content-Type
URLアクセス時のIPアドレス
- クラウド環境の場合:アクセス元のIPアドレスはMagicPodのIPアドレスになります。
- ローカルPC環境の場合:アクセス元のIPアドレスはローカルPCのものが使用されます。このため、外部公開されていないWebAPIについてもローカルPCがアクセス可能であればコール可能です。
Currently the cloud test run does not support webApi commandというエラーがでる場合
クラウド端末や外部クラウドでは、Web APIコールを呼び出し可能なURLが制限されており、「Currently the cloud test run does not support webApi command」というエラーが出ることがあります。
この問題は対応が可能なので、接続先URLドメインの情報とともにMagicPodサポートにご連絡ください。日本語等を含むURLを使用する必要がある場合は、クエリ文字列として扱うようにしてください。