📝
ServiceNow ATF の Run Server Side Script でテストステップ結果を取得や出力する
概要
ServiceNow Automated Test Framework (ATF) の Run Server Side Script
で変数を扱う方法を紹介します。
-
Run Server Side Script
を実行する際に前のテストステップの結果を参照する -
Run Server Side Script
の実行結果を後のテストステップで参照する
事前設定
ステップ設定(Step Configurations)の確認と設定
-
Record Query の Output Variables を確認する
Automated Test Framework (ATF) > Administration > Step Configurations > Record Query > Output Variables
Run Server Side Script
で値を利用する際にColumn name
を確認しておく必要があります。
このColumn name
はテストステップの種類ごとに変わります。
Record Query
はデフォルトでは以下のような設定になっています。Column name Label Default value Type Reference table table Table Name (empty) first_record First record Document ID (empty) -
Run Server Side Script の Output Variables を確認する
Automated Test Framework (ATF) > Administration > Step Configurations > Run Server Side Script > Output Variables
Record Query
と同様に確認します。
今回Output Variables
にu_var
を追加しています。
ここに定義されていない変数に出力しようとした場合、エラーになります。Column name Label Default value Type Reference record_id Record Document ID (empty) table table Table Name (empty) u_var var String (empty)
テストステップ
テストの全体像
今回は以下のようなテストを作成し、Run Service Side Script
で前レコードの結果取得と Script での処理結果のアウトプットを確認します。
Automated Test Framework (ATF) > Tests > {テスト名}
Display name | Execution order | memo_description | memo_sys_id |
---|---|---|---|
Record Query | 1 | abcdefghijklmnopqrstuvwxyz000001 | |
Run Server Side Script | 2 | Script1 | abcdefghijklmnopqrstuvwxyz000002 |
Run Server Side Script | 3 | Script2 | abcdefghijklmnopqrstuvwxyz000003 |
Log | 4 | abcdefghijklmnopqrstuvwxyz000004 |
テストステップの作成
1. Record Query
- 以下のインシデントレコードをクエリ
sys_id number abcdefghijklmnopqrstuvwxyz000000 INC0000000
2. Script1
-
steps("sys_id")
でRecord Query
の結果を取得 -
outputs.u_var
にインシデントレコードの number を出力
(function (outputs, steps, params, stepResult, assertEqual) {
var inputs = steps("abcdefghijklmnopqrstuvwxyz000001");
var gr = new GlideRecord(inputs.table);
gr.get(inputs.first_record);
var result = gr.number;
stepResult.setOutputMessage(result);
outputs.u_var = result;
return true;
})(outputs, steps, params, stepResult, assertEqual);
3. Script2
-
steps("sys_id")
でScript1
の結果を取得
(function (outputs, steps, params, stepResult, assertEqual) {
var str = steps("abcdefghijklmnopqrstuvwxyz000002").u_var;
stepResult.setOutputMessage(str);
return true;
})(outputs, steps, params, stepResult, assertEqual);
4. Log
-
Script1
の出力u_var
を取得する
結果
- 2 レコード目の
Script1
ではインシデントレコードの number にあたるINC0000000
をメッセージとして出力しています。 - 3 レコード目の
Script2
ではScript1
がu_ver
として出力した結果を取得し、INC0000000
をメッセージとして出力しています。(=Script1
はu_var
に出力できている) - 4 レコード目の
Log
では 3 レコード目と同様にScript1
がu_ver
として出力した結果を取得し、INC0000000
をメッセージとして出力しています。
Discussion