View a markdown version of this page

Verwenden Sie den IDT-Kontext - FreeRTOS

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, anhand derer bestimmt werden kann, wie jeder Test ausgeführt wird. Diese Daten werden als IDT-Kontext bezeichnet. Beispielsweise wird die Benutzerdatenkonfiguration, die von Testläufern in einer userdata.json Datei bereitgestellt wird, Testsuiten im IDT-Kontext zur Verfügung gestellt.

Der IDT-Kontext kann als schreibgeschütztes JSON-Dokument betrachtet werden. Testsuiten können mithilfe von Standard-JSON-Datentypen wie Objekten, Arrays, Zahlen usw. Daten aus dem Kontext abrufen und Daten in den Kontext schreiben.

Kontextschema

Der IDT-Kontext verwendet das folgende Format:

{ "config": { <config-json-content> "timeoutMultiplier": timeout-multiplier, "idtRootPath": <path/to/IDT/root> }, "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 aus der config.json Datei. Das config Feld enthält außerdem die folgenden zusätzlichen Felder:

config.timeoutMultiplier

Der Multiplikator für den beliebigen Timeout-Wert, der von der Testsuite verwendet wird. Dieser Wert wird vom Testrunner über die IDT-CLI angegeben. Der Standardwert ist 1.

config.idRootPath

Dieser Wert ist ein Platzhalter für den absoluten Pfadwert von IDT bei der Konfiguration der Datei. userdata.json Dies wird von den Befehlen Build und Flash verwendet.

device

Informationen zu dem Gerät, das für den Testlauf ausgewählt wurde. Diese Information entspricht dem devices Array-Element in der device.json Datei für das ausgewählte Gerät.

devicePool

Informationen über den Gerätepool, der für den Testlauf ausgewählt wurde. Diese Informationen entsprechen dem Gerätepool-Array-Element der obersten Ebene, das in der device.json Datei für den ausgewählten Gerätepool definiert ist.

resource

Informationen zu Ressourcengeräten aus der resource.json Datei.

resource.devices

Diese Information entspricht dem in der resource.json Datei definierten devices Array. Jedes devices Element enthält das folgende zusätzliche Feld:

resource.device.name

Der Name des Ressourcengeräts. Dieser Wert wird auf den requiredResource.name Wert in der test.json Datei gesetzt.

testData.awsCredentials

Die AWS Anmeldeinformationen, die vom Test für die Verbindung zur AWS Cloud verwendet wurden. Diese Informationen werden aus der config.json Datei abgerufen.

testData.logFilePath

Der Pfad zur Protokolldatei, in die der Testfall Protokollmeldungen schreibt. Die Testsuite erstellt diese Datei, falls sie nicht existiert.

userData

Informationen, die vom Testrunner in der userdata.json Datei bereitgestellt werden.

Greifen Sie auf Daten im Kontext zu

Sie können den Kontext mithilfe der JSONPath-Notation aus Ihren Konfigurationsdateien und aus Ihrer ausführbaren Textdatei mit den APIs und abfragen. GetContextValue GetContextString Die Syntax für JSONPath-Zeichenfolgen für den Zugriff auf den IDT-Kontext variiert wie folgt:

  • In suite.json und verwenden test.json Sie. {{query}} Das heißt, verwenden Sie nicht das Stammelement$., um Ihren Ausdruck zu starten.

  • Instatemachine.json, du verwendest{{$.query}}.

  • In API-Befehlen verwenden Sie query oder{{$.query}}, je nach Befehl. Weitere Informationen finden Sie in der Inline-Dokumentation in den SDKs.

In der folgenden Tabelle werden die Operatoren in einem typischen Foobar-JSONPath-Ausdruck beschrieben:

Operator Description
$ Das Stammelement. Da der Kontextwert der obersten Ebene für IDT ein Objekt ist, verwenden $. Sie ihn normalerweise, um Ihre Abfragen zu starten.
.childName Greift auf das untergeordnete Element mit dem Namen eines Objekts childName zu. Bei Anwendung auf ein Array wird ein neues Array erzeugt, bei dem dieser Operator auf jedes Element angewendet wird. Beim Elementnamen wird zwischen Groß- und Kleinschreibung unterschieden. Die Abfrage für den Zugriff auf den awsRegion Wert im config Objekt lautet beispielsweise$.config.awsRegion.
[start:end] Filtert Elemente aus einem Array und ruft Elemente ab, die beim start Index beginnen und bis zum end Index aufsteigen (beides inklusive).
[index1, index2, ... , indexN] Filtert Elemente aus einem Array und ruft nur Elemente aus den angegebenen Indizes ab.
[?(expr)] Filtert Elemente aus einem Array mithilfe des expr Ausdrucks. Dieser Ausdruck muss einen booleschen Wert ergeben.

Verwenden Sie die folgende Syntax, um Filterausdrücke zu erstellen:

<jsonpath> | <value> operator <jsonpath> | <value>

In dieser Syntax gilt:

  • jsonpathist ein JSONPath, der die Standard-JSON-Syntax verwendet.

  • valueist ein beliebiger benutzerdefinierter Wert, der die Standard-JSON-Syntax verwendet.

  • operatorist einer der folgenden Operatoren:

    • <(Weniger als)

    • <=(Weniger als oder gleich)

    • ==(Entspricht)

      Wenn der JSONPath oder der Wert in Ihrem Ausdruck ein Array, ein boolescher Wert oder ein Objektwert ist, dann ist dies der einzige unterstützte binäre Operator, den Sie verwenden können.

    • >=(Größer als oder gleich)

    • >(Größer als)

    • =~(Übereinstimmung mit regulären Ausdrücken). Um diesen Operator in einem Filterausdruck verwenden zu können, muss der JSONPath oder der Wert auf der linken Seite Ihres Ausdrucks zu einer Zeichenfolge ausgewertet werden, und auf der rechten Seite muss es sich um einen Musterwert handeln, der der RE2-Syntax folgt.

Sie können JsonPath-Abfragen in der Form {{query}} als Platzhalterzeichenfolgen in den environmentVariables Feldern args und in den Feldern in test.json Dateien verwenden. environmentVariables suite.json IDT führt eine Kontextsuche durch und füllt die Felder mit dem ausgewerteten Wert der Abfrage auf. In der suite.json Datei können Sie beispielsweise Platzhalterzeichenfolgen verwenden, um Umgebungsvariablenwerte anzugeben, die sich mit jedem Testfall ändern, und IDT füllt die Umgebungsvariablen mit dem richtigen Wert für jeden Testfall auf. Wenn Sie jedoch Platzhalterzeichenfolgen in test.json und suite.json -Dateien verwenden, gelten für Ihre Abfragen die folgenden Überlegungen:

  • Sie müssen jedes Vorkommen des devicePool Schlüssels in Ihrer Abfrage ausschließlich in Kleinbuchstaben schreiben. Das heißt, verwenden Sie devicepool stattdessen.

  • Für Arrays können Sie nur Arrays von Zeichenketten verwenden. Darüber hinaus verwenden Arrays ein vom Standard abweichendes Format. item1, item2,...,itemN Wenn das Array nur ein Element enthält, wird es als serialisiertitem, sodass es nicht von einem Zeichenkettenfeld zu unterscheiden ist.

  • Sie können keine Platzhalter verwenden, um Objekte aus dem Kontext abzurufen.

Aufgrund dieser Überlegungen empfehlen wir, dass Sie, wann immer möglich, die API verwenden, um auf den Kontext in Ihrer Testlogik zuzugreifen, anstatt Platzhalterzeichenfolgen in test.json UND-Dateien zu verwenden. suite.json In einigen Fällen kann es jedoch praktischer sein, JsonPath-Platzhalter zu verwenden, um einzelne Zeichenfolgen abzurufen, die als Umgebungsvariablen festgelegt werden sollen.