翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
IDT コンテキストを使用する
IDT がテストスイートを実行するとき、テストスイートは、各テストの実行方法の決定に使用できる一連のデータにアクセスできます。このデータは IDT コンテキストと呼ばれます。例えば、テストの実行者によって userdata.json
ファイルに提供されるユーザーデータ設定は、IDT コンテキスト内でテストスイートに提供されます。
IDT コンテキストは、読み取り専用の JSON ドキュメントと考えることができます。テストスイートは、オブジェクト、配列、数値などの標準 JSON データ型を使用して、コンテキストからデータを取得することや、コンテキストにデータを書き込むことができます。
コンテキストスキーマ
IDT コンテキストは次の形式を使用します。
{ "config": { <config-json-content> "timeoutMultiplier": timeout-multiplier }, "device": { <device-json-device-element> }, "devicePool": { <device-json-pool-element> }, "resource": { "devices": [ { <resource-json-device-element> "name": "<resource-name>" } ] }, "testData": { "awsCredentials": { "awsAccessKeyId": "<access-key-id>", "awsSecretAccessKey": "<secret-access-key>", "awsSessionToken": "<session-token>" }, "logFilePath": "/path/to/log/file" }, "userData": { <userdata-json-content> } }
config
-
config.json ファイル からの情報。
config
フィールドには、次の追加フィールドも含まれます。config.timeoutMultiplier
-
テストスイートによって使用される任意のタイムアウト値の乗数。この値は、IDT CLI からテストの実行者によって指定されます。デフォルト値は
1
です。
device
-
テスト実行用に選択されたデバイスに関する情報。この情報は、選択されたデバイスの device.json ファイル の
devices
配列要素に相当します。 devicePool
-
テスト実行用に選択されたデバイスプールに関する情報。この情報は、選択されたデバイスプールの
device.json
ファイルに定義されている最上位レベルのデバイスプール配列要素に相当します。 resource
-
resource.json
ファイルからのリソースデバイスに関する情報。resource.devices
-
この情報は、
devices
ファイルに定義されているresource.json
配列に相当します。各devices
要素には、以下の追加フィールドが含まれています。resource.device.name
-
リソースデバイスの名前。この値は、
test.json
ファイルでrequiredResource.name
値に設定されます。
testData.awsCredentials
-
AWS クラウドに接続するためにテストによって使用される AWS 認証情報。この情報は、
config.json
ファイルから取得されます。 testData.logFilePath
-
テストケースがログメッセージを書き込むログファイルへのパス。このファイルは、存在しない場合、テストスイートによって作成されます。
userData
-
テストの実行者によって userdata.json ファイル に提供された情報。
コンテキスト内のデータにアクセスする
コンテキストは、JSONPath 表記を使用して JSON ファイルからクエリすることも、GetContextValue
および GetContextString
API を使用してテキスト実行可能ファイルからクエリすることもできます。IDT コンテキストにアクセスするための JSONPath 文字列の構文は、次のように異なります。
-
suite.json
およびtest.json
では、{{
を使用します。つまり、式を開始するためにルート要素query
}}$.
を使用しません。 -
test_orchestrator.yaml
では{{
を使用します。query
}}非推奨のステートマシンを使用する場合、
state_machine.json
では{{$.
を使用します。query
}} -
API コマンドでは、コマンドに応じて
またはquery
{{$.
を使用します。詳細については、SDK のインラインドキュメントを参照してください。query
}}
次の表に、一般的な JSONPath 式の演算子を示します。
Operator | Description |
---|---|
$ |
The root element. Because the top-level context
value for IDT is an object, you will typically use $. to
start your queries. |
.childName |
Accesses the child element with name
childName from an object. If applied to an array,
yields a new array with this operator applied to each element. The
element name is case sensitive. For example, the query to access the
awsRegion value in the config object is
$.config.awsRegion . |
[start:end] |
Filters elements from an array, retrieving items
beginning from the start index and going up to the
end index, both inclusive. |
[index1, index2, ... , indexN] |
Filters elements from an array, retrieving items from only the specified indices. |
[?(expr)] |
Filters elements from an array using the
expr expression. This expression must evaluate to a
boolean value. |
フィルター式を作成するには、次の構文を使用します。
<jsonpath>
|<value>
operator
<jsonpath>
|<value>
この構文の説明は次のとおりです。
-
jsonpath
は、標準 JSON 構文を使用する JSONPath です。 -
value
は、標準 JSON 構文を使用するカスタム値です。 -
operator
は、以下のいずれかの演算子です。-
<
(未満) -
<=
(以下) -
==
(等しい)式内の JSONPath または値が配列、ブール値、またはオブジェクト値である場合は、これがユーザーに使用可能な唯一の二項演算子です。
-
>=
(以上) -
>
(次より大きい) -
=~
(正規表現の一致)。この演算子をフィルター式で使用するには、式の左側の JSONPath または値が文字列に評価される必要があり、右側が RE2 構文に従ったパターン値である必要があります。
-
{{query
}} 形式の JSONPath クエリは、プレースホルダ文字列として、test.json
ファイルの args
および environmentVariables
フィールド内と、suite.json
ファイルの environmentVariables
フィールド内で使用できます。IDT はコンテキスト検索を実行し、クエリの評価値をフィールドに入力します。例えば、suite.json
ファイルでは、プレースホルダー文字列を使用して、各テストケースとともに変化する環境変数の値を指定できます。IDT は、環境変数に各テストケースの正しい値を入力します。ただし、test.json
ファイルおよび suite.json
ファイルでプレースホルダー文字列を使用する場合は、クエリに次の考慮事項が適用されます。
-
クエリに含まれる各
devicePool
キーは、すべて小文字にする必要があります。つまり、代わりにdevicepool
を使用します。 -
配列には、文字列の配列のみを使用できます。さらに、配列は非標準の
item1, item2,...,itemN
の形式を使用します。配列は、要素が 1 つしか含まれていない場合、item
としてシリアル化され、文字列フィールドと区別がつかなくなります。 -
プレースホルダーを使用してコンテキストからオブジェクトを取得することはできません。
これらの事項を考慮して、テストロジックのコンテキストへのアクセスには、test.json
ファイルおよび suite.json
ファイルのプレースホルダー文字列ではなく、可能な限り API を使用することをお勧めします。ただし、環境変数として設定する単一の文字列を取得するときは、JSONPath プレースホルダーを使用する方が便利な場合があります。