View a markdown version of this page

Utiliser le contexte IDT - FreeRTOS

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 fonctionnement 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 du config.json dossier. Le config champ contient également les champs supplémentaires suivants :

config.timeoutMultiplier

Le multiplicateur de toute valeur de délai d'attente utilisée par la suite de tests. Cette valeur est spécifiée par le testeur à partir de l'interface de ligne de commande IDT. La valeur par défaut est 1.

config.idRootPath

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

device

Informations sur l'appareil sélectionné pour le test. Ces informations sont équivalentes à l'élément de devices tableau du device.json fichier pour le 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 du 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

Le nom du périphérique de ressources. 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.json fichier.

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 à l'aide des API GetContextValue etGetContextString. La syntaxe des chaînes JSONPath permettant d'accéder au contexte IDT varie comme suit :

  • Dans suite.json ettest.json, vous utilisez{{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 en ligne dans les kits de développement logiciel.

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

Opérateur Description
$ L'élément racine. Étant donné que la valeur de contexte de niveau supérieur pour IDT est un objet, vous l'utiliserez généralement $. pour démarrer vos requêtes.
.childName Permet d'accéder à l'élément enfant avec un nom childName à partir d'un objet. S'il est appliqué à un tableau, produit un nouveau tableau avec cet opérateur appliqué à chaque élément. Le nom de l'élément fait la distinction entre 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, les deux 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, une valeur booléenne 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 entre expressions régulières). Pour utiliser cet opérateur dans une expression de filtre, le JSONPath ou la valeur sur le côté gauche de votre expression doit correspondre à une chaîne et le côté droit doit être une valeur de modèle qui suit la syntaxe RE2.

Vous pouvez utiliser des requêtes JSONPath au format {{query}} comme chaînes d'espace réservé dans les environmentVariables champs args et dans test.json 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 les valeurs des variables d'environnement qui changent avec chaque scénario de test et IDT renseignera les variables d'environnement avec la valeur correcte pour chaque scénario de test. Toutefois, lorsque vous utilisez des chaînes d'espace réservé dans suite.json les fichiers test.json et, les considérations suivantes s'appliquent à vos requêtes :

  • Chaque occurrence de la devicePool clé dans votre requête doit être en minuscules. Autrement dit, utilisez-le à la devicepool place.

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

  • Vous ne pouvez pas utiliser d'espaces réservés pour extraire des objets du contexte.

Pour ces raisons, 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 d'espaces réservés 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 individuelles à définir comme variables d'environnement.