Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verwenden Sie den IDT-Kontext
Wenn IDT eine Testsuite ausführt, kann die Testsuite auf eine Reihe von Daten zugreifen, die verwendet werden können, um zu bestimmen, wie jeder Test ausgeführt wird. Diese Daten werden als IDT-Kontext bezeichnet. Beispielsweise wird Benutzerdatenkonfiguration, die von Testläufern in einemuserdata.json
wird Test-Suiten im IDT-Kontext zur Verfügung gestellt.
Der IDT-Kontext kann als schreibgeschütztes JSON-Dokument angesehen werden. Test-Suites können Daten aus dem Kontext abrufen und Daten mit Standard-JSON-Datentypen wie Objekten, Arrays, Zahlen usw. in den Kontext schreiben.
Kontext-Schema
Der IDT-Kontext verwendet das folgende Format:
{ "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
-
Informationen von derconfig.jsonOrdneraus. Die
config
enthält auch das folgende zusätzliche Feld:config.timeoutMultiplier
-
Der Multiplikator für den von der Testsuite verwendeten Timeout-Wert. Dieser Wert wird vom Testläufer aus der IDT CLI angegeben. Der Standardwert ist
1
.
device
-
Informationen über das für den Testlauf ausgewählte Gerät. Diese Information entspricht
devices
Array-Element imdevice.jsonOrdnerfür das ausgewählte Gerät. devicePool
-
Informationen über den Gerätepool, der für den Testlauf ausgewählt wurde. Diese Information entspricht dem Gerätepool-Array-Element der obersten Ebene, das in der
device.json
-Datei für den ausgewählten Gerätepool. resource
-
Informationen über Ressourcengeräte aus dem
resource.json
file.resource.devices
-
Diese Information entspricht
devices
Array definiert imresource.json
file. EACHdevices
-Element enthält das folgende zusätzliche Feld:resource.device.name
-
Der Name des Ressourcengeräts. Dieser Wert wird auf
requiredResource.name
Wert imtest.json
file.
testData.awsCredentials
-
DieAWSAnmeldeinformationen, die vom Test verwendet werden, um eine Verbindung mit demAWSCloud. Diese Informationen werden von der
config.json
file. testData.logFilePath
-
Der Pfad zu der Protokolldatei, in die der Testfall Protokollmeldungen schreibt. Die Test-Suite erstellt diese Datei, falls sie nicht vorhanden ist.
userData
-
Informationen, die der Testläufer imuserdata.jsonOrdneraus.
Zugriff auf Daten im Kontext
Sie können den Kontext mithilfe der JsonPath-Notation aus Ihren JSON-Dateien und aus Ihrer ausführbaren Textdatei mit demGetContextValue
undGetContextString
APIs. Die Syntax für JsonPath-Strings für den Zugriff auf den IDT-Kontext variiert wie folgt:
-
In :
suite.json
undtest.json
verwenden Sie{{
aus. Das heißt, benutze das Wurzelelement nichtquery
}}$.
um deinen Ausdruck zu beginnen. -
In :
test_orchestrator.yaml
verwenden Sie{{
aus.query
}}Wenn Sie den veralteten Zustandscomputer verwenden, dann wird in
state_machine.json
verwenden Sie{{$.
aus.query
}} -
In API-Befehlen verwenden Sie
oderquery
{{$.
, je nach Befehl. Weitere Informationen finden Sie in der Inline-Dokumentation in den SDKs.query
}}
In der folgenden Tabelle werden die Operatoren in einem typischen JsonPath-Ausdruck beschrieben:
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
Ende 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. |
Verwenden Sie die folgende Syntax, um Filterausdrücke zu erstellen:
<jsonpath>
|<value>
operator
<jsonpath>
|<value>
In dieser Syntax gilt:
-
jsonpath
ist ein JsonPath, der die Standard-JSON-Syntax verwendet. -
value
ist ein benutzerdefinierter Wert, der die Standard-JSON-Syntax verwendet. -
operator
ist einer der folgenden Operatoren:-
<
(kleiner als) -
<=
(kleiner als oder gleich) -
==
(Gleich)Wenn der JsonPath oder Wert in Ihrem Ausdruck ein Array, ein boolescher Wert oder ein Objektwert ist, ist dies der einzige unterstützte binäre Operator, den Sie verwenden können.
-
>=
(größer als oder gleich) -
>
(größer als) -
=~
(Reguläre Ausdrücke stimmen überein). Um diesen Operator in einem Filterausdruck zu verwenden, muss der JsonPath oder Wert auf der linken Seite Ihres Ausdrucks zu einer Zeichenfolge ausgewertet werden, und die rechte Seite muss ein Musterwert sein, der auf dieRE2-Syntaxaus.
-
Sie können JsonPath-Abfragen im Formular verwenden {{abfragen
}} als Platzhalterzeichenfolgen innerhalb derargs
undenvironmentVariables
-Felder intest.json
Dateien und innerhalb derenvironmentVariables
-Felder insuite.json
Dateien. IDT führt eine Kontextsuche durch und füllt die Felder mit dem ausgewerteten Wert der Abfrage aus. Beispiel, imsuite.json
können Sie Platzhalterzeichenfolgen verwenden, um Umgebungsvariablenwerte anzugeben, die sich bei jedem Testfall ändern, und IDT füllt die Umgebungsvariablen mit dem richtigen Wert für jeden Testfall. Wenn Sie jedoch Platzhalterzeichenfolgen in verwendentest.json
undsuite.json
-Dateien berücksichtigen Sie die folgenden Überlegungen für Ihre Anfragen:
-
Sie müssen jedes Vorkommen des
devicePool
geben Sie Ihre Anfrage in Kleinbuchstaben ein. Das heißt, benutzedevicepool
Stattdessen. -
Für Arrays können Sie nur Arrays von Strings verwenden. Darüber hinaus verwenden Arrays einen Nicht-Standard
item1, item2,...,itemN
. Wenn das Array nur ein Element enthält, wird es als serialisiertitem
, wodurch es von einem String-Feld nicht zu unterscheiden ist. -
Sie können keine Platzhalter verwenden, um Objekte aus dem Kontext abzurufen.
Aufgrund dieser Überlegungen empfehlen wir, dass Sie nach Möglichkeit die API verwenden, um auf den Kontext in Ihrer Testlogik zuzugreifen, anstatt auf Platzhalterzeichenfolgen intest.json
undsuite.json
Dateien. In einigen Fällen ist es jedoch möglicherweise bequemer, JsonPath-Platzhalter zu verwenden, um einzelne Strings abzurufen, die als Umgebungsvariablen festgelegt werden sollen.