Utiliser le contexte IDT - Gratuit RTOS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utiliser le contexte IDT

Lorsque IDT exécute une suite de tests, celle-ci peut accéder à un ensemble de données qui peuvent être utilisées pour déterminer le mode d'exécution de chaque test. Ces données sont appelées contexte IDT. Par exemple, la configuration des données utilisateur fournie par les testeurs dans un userdata.json fichier est mise à la disposition des suites de tests dans le contexte IDT.

Le contexte IDT peut être considéré comme un document JSON en lecture seule. Les suites de tests peuvent récupérer des données et écrire des données dans le contexte à l'aide de types de données JSON standard tels que des objets, des tableaux, des nombres, etc.

Schéma de contexte

Le contexte IDT utilise le format suivant :

{ "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

Informations contenues dans le config.jsonfichier. Le config champ contient également les champs supplémentaires suivants :

config.timeoutMultiplier

Le multiplicateur pour toute valeur de délai d'attente utilisée par la suite de tests. Cette valeur est spécifiée par le lanceur de tests à partir de la CLI IDT. La valeur par défaut est 1.

config.idRootPath

Cette valeur est un espace réservé pour la valeur du chemin absolu d'IDT lors de la configuration du userdata.json fichier. Ceci est utilisé par les commandes build et flash.

device

Informations sur le périphérique sélectionné pour le test. Ces informations sont équivalentes à l'élément du devices tableau dans le device.jsonfichier du périphérique sélectionné.

devicePool

Informations sur le pool de périphériques sélectionné pour le test. Ces informations sont équivalentes à l'élément de tableau de pool de périphériques de niveau supérieur défini dans le device.json fichier pour le pool de périphériques sélectionné.

resource

Informations sur les périphériques de ressources contenues dans le resource.json fichier.

resource.devices

Ces informations sont équivalentes au devices tableau défini dans le resource.json fichier. Chaque devices élément inclut le champ supplémentaire suivant :

resource.device.name

Nom du périphérique ressource. Cette valeur est définie sur la requiredResource.name valeur du test.json fichier.

testData.awsCredentials

Les AWS informations d'identification utilisées par le test pour se connecter au AWS cloud. Ces informations sont extraites du config.json fichier.

testData.logFilePath

Le chemin d'accès au fichier journal dans lequel le scénario de test écrit les messages de journal. La suite de tests crée ce fichier s'il n'existe pas.

userData

Informations fournies par le testeur dans le userdata.jsonfichier.

Accédez aux données dans le contexte

Vous pouvez interroger le contexte à l'aide de la notation JSONPath à partir de vos fichiers de configuration et de votre exécutable texte avec les API GetContextValue andGetContextString. La syntaxe des chaînes JSONPath permettant d'accéder au contexte IDT varie comme suit :

  • Dans suite.json ettest.json, tu utilises{{query}}. En d'autres termes, n'utilisez pas l'élément racine $. pour démarrer votre expression.

  • Dansstatemachine.json, tu utilises{{$.query}}.

  • Dans les commandes d'API, vous utilisez query ou{{$.query}}, selon la commande. Pour plus d'informations, consultez la documentation intégrée dans les SDK.

Le tableau suivant décrit les opérateurs d'une expression foobar JSONPath typique :

Opérateur Description
$ L'élément racine. La valeur de contexte de haut niveau pour IDT étant un objet, vous l'utiliserez généralement $. pour démarrer vos requêtes.
.childName Accède à l'élément enfant dont le nom childName provient d'un objet. S'il est appliqué à un tableau, il produit un nouveau tableau avec cet opérateur appliqué à chaque élément. Le nom de l'élément distingue les majuscules et minuscules. Par exemple, la requête pour accéder à la awsRegion valeur de l'configobjet est$.config.awsRegion.
[start:end] Filtre les éléments d'un tableau, en récupérant les éléments en commençant par l'startindex et en remontant jusqu'à l'endindex, dans les deux cas inclus.
[index1, index2, ... , indexN] Filtre les éléments d'un tableau, en récupérant les éléments uniquement à partir des indices spécifiés.
[?(expr)] Filtre les éléments d'un tableau à l'aide de l'exprexpression. Cette expression doit être évaluée à une valeur booléenne.

Pour créer des expressions de filtre, utilisez la syntaxe suivante :

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

Dans cette syntaxe :

  • jsonpathest un JSONPath qui utilise la syntaxe JSON standard.

  • valueest une valeur personnalisée qui utilise la syntaxe JSON standard.

  • operatorest l'un des opérateurs suivants :

    • <(Inférieur à)

    • <=(Inférieur ou égal à)

    • ==(Égal à)

      Si le JSONPath ou la valeur de votre expression est un tableau, un booléen ou une valeur d'objet, il s'agit du seul opérateur binaire pris en charge que vous pouvez utiliser.

    • >=(Supérieur ou égal à)

    • >(Supérieur à)

    • =~(Correspondance d'expressions régulières). Pour utiliser cet opérateur dans une expression de filtre, le JSONPath ou la valeur du côté gauche de votre expression doit être une chaîne et le côté droit doit être une valeur de modèle conforme à la syntaxe RE2.

Vous pouvez utiliser des requêtes JSONPath sous la forme {{query}} comme chaînes d'espace réservé dans les environmentVariables champs args et des test.json fichiers et dans les environmentVariables champs des fichiers. suite.json IDT effectue une recherche contextuelle et remplit les champs avec la valeur évaluée de la requête. Par exemple, dans le suite.json fichier, vous pouvez utiliser des chaînes d'espace réservé pour spécifier des valeurs de variables d'environnement qui changent avec chaque scénario de test et IDT remplira les variables d'environnement avec la valeur correcte pour chaque cas de test. Toutefois, lorsque vous utilisez des chaînes d'espace réservé dans des suite.json fichiers test.json et, les considérations suivantes s'appliquent à vos requêtes :

  • Vous devez écrire toutes les occurrences de la devicePool clé dans votre requête en minuscules. C'est-à-dire, utilisez devicepool plutôt.

  • Pour les tableaux, vous ne pouvez utiliser que des tableaux de chaînes. De plus, les tableaux utilisent un format non standard. item1, item2,...,itemN Si le tableau ne contient qu'un seul élément, il est sérialisé en tant que telitem, ce qui le rend impossible à distinguer d'un champ de chaîne.

  • Vous ne pouvez pas utiliser d'espaces réservés pour récupérer des objets depuis le contexte.

En raison de ces considérations, nous vous recommandons, dans la mesure du possible, d'utiliser l'API pour accéder au contexte de votre logique de test au lieu d'utiliser des chaînes de caractères dans suite.json les fichiers test.json et. Cependant, dans certains cas, il peut être plus pratique d'utiliser des espaces réservés JSONPath pour récupérer des chaînes uniques à définir comme variables d'environnement.