mablのローコード機能では達成できない要件がAPIテストの目標に含まれている場合、カスタムスクリプトの作成という方法があります。mablのカスタムスクリプトは1つ以上のAPIスニペットで構成されており、作成したスニペットは他のAPIテストにも再利用できます。
カスタムスクリプトは、次のように、複雑なAPIテストの処理や、トラブルシューティングシナリオに役立ちます。
- 複数のコード行を必要とする特別な方法でレスポンスからデータを抽出する
- サードパーティAPIから認証トークンを取得する、認証トークンの更新が必要かどうかをチェックするなど、特定の認証シナリオに対処する
- テスト内の各リクエストの後に特定のクリーンアップコードを実行する
- XMLベースのレスポンスボディからアサーションまたは変数を作成する
- デバッグのためにコンソールログを実行する
ここでは、カスタムスクリプトのタイプ、生成AIスニペット、サポート対象ライブラリについて説明します。
カスタムスクリプトのタイプ
mablでは、テストレベルとリクエストレベルでカスタムスクリプトにAPIスニペットを追加できます。
- テストレベルスクリプトは、APIテストのすべてのリクエストに適用されます。
- リクエストレベルスクリプトは、個別のリクエストに適用されます。
特定のリクエストは、存在するスクリプトに基づいて次の順に実行されます。
- テストレベルの事前リクエストスクリプト
- リクエストレベルの事前リクエストスクリプト
- リクエスト
- レスポンス
- テストレベルの事後リクエストスクリプト
- リクエストレベルの事後リクエストスクリプト
生成AIスニペット
カスタムAPIスニペットの作成に支援が必要な場合は、AIスニペットジェネレーターで実行したいことを記述してみてください。プロンプトには、テストの変数の参照やリクエスト情報を含めることができます。AIスニペットジェネレーターは、次の情報にアクセスできます。
- ステップ名
- テストの変数
- リクエストの詳細。リクエストメソッド、URL、ヘッダーなど
- レスポンスの詳細。レスポンスのヘッダー、ボディ、ステータス、ステータスコードなど
AIスニペットジェネレーターは、機密データが含まれる可能性のある変数、リクエストヘッダー、レスポンスヘッダーの値をマスクします。名前に “authorization” や “cookie” を含むヘッダーと、名前に “password” を含む変数 (“api.credentials.password” 変数など) については、値がAIスニペットジェネレーターで非表示になります。
サポート対象ライブラリ
mablとPostmanとのインテグレーションにより、ユーザーはPostmanでサポートされるJavaScriptのオブジェクトや関数を使用して、カスタムロジックやレスポンスの検証を行うことができます。
ベストプラクティスとして、可能な限りAPIテストエディターのローコードオプションを使用し、Postmanメソッドは複雑なシナリオを処理する場合にのみ使用することをお勧めします。次の2つの理由から、テストでのスクリプトの使用はなるべく控え、必要な場合にのみ使用することをお勧めします。
- ワークスペースのすべてのメンバーがテストを容易に理解し、保守できるようにするため。
- 結果をUIから簡単に表示できるようにするため。
また、Postmanとのインテグレーションにより、多くのJavaScriptライブラリとNode.jsモジュールも使用できます。
JavaScriptライブラリ
- ajv
- atob
- btoa
- chai
- cheerio
- crypto-js
- csv-parse/lib/sync
- lodash
- moment
- postman-collection
- tv4
- uuid
- xml2js
Node.jsモジュール
- path
- assert
- buffer
- util
- url
- punycode
- querystring
- string-decoder
- stream
- timers
- events
require()
メソッドを使用すると、これらのライブラリのいずれかを呼び出すことができます。以下に示すのは、momentライブラリを使用して今日から7日先の将来の日付を生成する例です。
let moment = require('moment'); //get a date that is N number of days from today let date = moment.utc().add(7, 'days').toJSON(); //specify desired date and time format let dateFormat = "MM-DD-YYYY" //format the date and assign it to a variable to be used in other API requests and tests pm.environment.set("futureDate", moment(date).format(dateFormat));
JavaScriptバージョンのサポート
APIテストエディターは、ECMAScript 8をサポートしています。