APIスクリプトの例
このガイドでは、レスポンス検証、変数作成、デバッグのためのコンソールログの実行を使用した例を紹介します。
Postman JavaScriptオブジェクト
mablとPostmanとのインテグレーションにより、ユーザーはPostmanでサポートされるJavaScriptのオブジェクトや関数を使用して、カスタムロジックやレスポンスの検証を行うことができます。
レスポンス検証
APIが期待どおりの結果を返していることを検証するには、ローコードのアサーション機能を使用することをお勧めします。ただし、より複雑なアサーションを作成する必要がある場合は、JavaScriptを使用してカスタムアサーションを作成できます。
JSONペイロードを使用するREST API
JSONレスポンスボディのデータを検証するには、以下のようなコードを使用します。
pm.test("Person is Jane", () => {
//assigning the response body to a constant.
const responseJson = pm.response.json();
//assert that the third person object in the response has name and age properties with a given value.
pm.expect(responseJson.person[3].name).to.eql("Jane");
pm.expect(responseJson.person[3].age).to.eql(23);
});
配列の長さを検証する場合は、上記のpm.tests() 関数内に次のスニペットを追加できます: pm.expect(responseJson.person).to.have.lengthOf(15);`
前述の例で、アサートする個人名がpersonNameなどの変数に格納される場合は、静的文字列 "Jane" を変数値に置き換えて、アサーション用のコードを次のようにすることができます: pm.expect(responseJson.person[3].name).to.eql(pm.variables.get("personName"));
XMLペイロードを使用するSOAP API
XMLベースのレスポンスボディのデータを検証するアサーションを作成するには、次のスクリプト手法を使用します。
- 組み込みのxml2jsonライブラリを使用して、XMLボディをJSONオブジェクトに変換します。
- JSONパス表記を使用するか、オブジェクトキーの反復処理を行ってアサートするターゲットプロパティを見つけます。
例: POSTリクエストを次のエンドポイントに送信します: https://www.w3schools.com/xml/tempconvert.asmx
(温度を華氏から摂氏に変換)。1つの変数 (例: tempF = 32) をリクエストボディで華氏の入力を渡すのに使用し、もう1つの変数をレスポンスボディで摂氏の期待される結果 (例: tempC = 0) を検証するのに使用します。
APIテストステップで次の内容を指定します。
メソッド: POST
URL: https://www.w3schools.com/xml/tempconvert.asmx
ヘッダー:
- Content-Type = text/xml
- SOAPAction =
https://www.w3schools.com/xml/FahrenheitToCelsius
- リクエストボディ: 次のスクリプトを参照。
POSTリクエストボディ
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<FahrenheitToCelsius xmlns="https://www.w3schools.com/xml/">
<Fahrenheit>{{tempF}}</Fahrenheit>
</FahrenheitToCelsius>
</soap:Body>
</soap:Envelope>
このPOSTリクエストを送信すると、摂氏表示の温度を含むレスポンスボディが返されます (例: 32°Fが0°Cに変換される)。
レスポンスボディ
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<FahrenheitToCelsiusResponse xmlns="https://www.w3schools.com/xml/">
<FahrenheitToCelsiusResult>0</FahrenheitToCelsiusResult>
</FahrenheitToCelsiusResponse>
</soap:Body>
</soap:Envelope>
0 の値がtempC変数の値に等しいかどうかをアサートするには、APIステップの [Validation and variable assignment] セクションで次のスクリプトを記述します。
XMLベースのレスポンスに対するJavaScriptのアサーション
pm.test("Validate conversion Fahrenheit To Celsius produces the expected result", () => {
//convert XML response body to a JSON object using xml2Json library
const responseJson = xml2Json(pm.response.text());
//Use JSON path syntax to get to the target property
let result = responseJson["soap:Envelope"]["soap:Body"].FahrenheitToCelsiusResponse.FahrenheitToCelsiusResult;
//Assert that result is the correct value
pm.expect(result).to.eql(pm.variables.get("tempC"));
});
変数作成
JSONデータに基づいた変数の作成
APIレスポンス (JSON形式) に基づいて変数を作成するには、次のようなコードを使用します。
JavaScript
var jsonData = JSON.parse(responseBody);
//assign the third person's object id to a variable named userID
pm.environment.set("userID", jsonData.person[3].id);
XMLデータに基づいた変数の作成
XML形式のAPIレスポンスボディに基づいて変数を作成するには、XMLベースのレスポンスボディのデータを検証する場合と同様に、最初に次の手順を実行します。
- 組み込みのxml2jsonライブラリを使用して、XMLボディをJSONオブジェクトに変換します。
- JSONパス表記を使用するか、オブジェクトキーの反復処理を行って変数に代入するターゲットプロパティ値を見つけます。
たとえば、上記のアサーションセクションで説明した同じAPIエンドポイント (温度を華氏から摂氏に変換) を使用する場合は、次のスクリプトを用いて生成される摂氏温度をmyTemperatureという変数に代入することができます。
//convert XML response body to a JSON object using xml2Json library
const responseJson = xml2Json(pm.response.text());
//Use JSON path syntax to get to the target property value to be assigned to a variable
let result = responseJson["soap:Envelope"]["soap:Body"].FahrenheitToCelsiusResponse.FahrenheitToCelsiusResult;
//Assign the result value to a given variable name
pm.environment.set("myTemperature", result);
変数作成のスクリプトは、前のセクションのアサーションスクリプトによく似ています。大きな違いは、アサーションで検証を行う代わりにターゲット値を変数に代入している点です。
リクエストを送信する際に更新後のmyTemperature変数値を参照するには、APIテストエディターの左側のパネルにある変数リストにmyTemperatureを追加します。
コンソールログ
APIテストでは、デバッグに便利なコンソールログもサポートされます。コンソールログは、事前リクエストスクリプト、テストスクリプト、フローレベルスクリプトのすべてのAPIテストスクリプトで機能します。
ログステートメントの使用
以下のログステートメントがサポートされます。
- console.log()
- console.info()
- console.warn()
- console.error()
出力の表示
コンソールログステートメントの出力は、APIテストエディター、クラウド実行の [API Test Output] ページ、CLIによるローカル実行の出力で確認できます。
APIテストエディターで [Send] ボタンをクリックすると、コンソールログは次のように [Results] パネルのタブとして利用可能になります。

クラウド実行では、[Test Output] ページでAPIテストの各ステップについて、コンソールログを確認できます。

コンソールログは、mabl CLIで実行したAPIテストの出力にも含まれます。
テキスト
テストのサイズ制限
APIテストのサイズは、1MBを超えることはできません。大きなJavaScript事前リクエストスクリプトは、慎重に使用することをお勧めします。
API test with console log
→
┌
│ 'Reticulating splines before API request.'
│ 'Reticulating complete:', { splineCount: 42, averageReticulation
│ 9m: 0.98 }
└
GET https://localhost:8080/test/splines OK, 1kB, 243ms]
┌
│ 'Resetting splines after request.'
└
✓ Status equals 200
┌─────────────────────────┬────────────────────┬───────────────────┐
│ │ executed │ failed │
├─────────────────────────┼────────────────────┼───────────────────┤
│ iterations │ 1 │ 0 │
├─────────────────────────┼────────────────────┼───────────────────┤
│ requests │ 1 │ 0 │
├─────────────────────────┼────────────────────┼───────────────────┤
│ test-scripts │ 1 │ 0 │
├─────────────────────────┼────────────────────┼───────────────────┤
│ prerequest-scripts │ 1 │ 0 │
├─────────────────────────┼────────────────────┼───────────────────┤
│ assertions │ 1 │ 0 │
├─────────────────────────┴────────────────────┴───────────────────┤
│ total run duration: 307ms │
├──────────────────────────────────────────────────────────────────┤
│ total data received: 102B (approx) │
├──────────────────────────────────────────────────────────────────┤
│ average response time: 243ms [min: 243ms, max: 243ms, s.d.: 0µs] │
└──────────────────────────────────────────────────────────────────┘
10:34:07 AM - Test Passed
詳細はこちら
詳細なスクリプトのリファレンスについては、Postmanのドキュメントを参照してください。
Updated 7 months ago