Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Utilizar el contexto IDT
Cuando IDT ejecuta un conjunto de pruebas, el conjunto de pruebas puede acceder a un conjunto de datos que se pueden utilizar para determinar cómo se ejecuta cada prueba. Estos datos se denominan contexto IDT. Por ejemplo, la configuración de datos de usuario proporcionada por los ejecutores de pruebas en unuserdata.json
se pone a disposición de los grupos de pruebas en el contexto IDT.
El contexto IDT se puede considerar un documento JSON de solo lectura. Los conjuntos de pruebas pueden recuperar datos y escribirlos en el contexto utilizando tipos de datos JSON estándar, como objetos, matrices, números, etc.
Esquema contextual
El contexto IDT utiliza el siguiente formato:
{ "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
-
Información delconfig.jsonarchivo. La
config
también contiene el siguiente campo adicional:config.timeoutMultiplier
-
El multiplicador del valor de tiempo de espera utilizado por el conjunto de pruebas. Este valor lo especifica el ejecutor de prueba de la CLI de IDT. El valor predeterminado es
1
.
device
-
Información sobre el dispositivo seleccionado para la prueba. Esta información equivale a la
devices
elemento array en eldevice.jsonarchivopara el dispositivo seleccionado. devicePool
-
Información sobre el grupo de dispositivos seleccionado para la ejecución de prueba. Esta información es equivalente al elemento de matriz de grupos de dispositivos de nivel superior definido en el
device.json
para el grupo de dispositivos seleccionado. resource
-
Información sobre los dispositivos de recursos de la
resource.json
file.resource.devices
-
Esta información equivale a la
devices
matriz definida en elresource.json
file. Cadadevices
incluye el siguiente campo adicional:resource.device.name
-
El nombre del dispositivo de recursos. Este valor se establece en el
requiredResource.name
valor en eltest.json
file.
testData.awsCredentials
-
LaAWScredenciales utilizadas por la prueba para conectarse alAWSnube. Esta información se obtiene del
config.json
file. testData.logFilePath
-
Ruta del archivo de registro en el que el caso de prueba escribe mensajes de registro. El conjunto de pruebas crea este archivo si no existe.
userData
-
Información proporcionada por el corredor de pruebas en eluserdata.jsonarchivo.
Acceda a los datos en el contexto
Puede consultar el contexto mediante la notación JSONPath desde los archivos JSON y desde el ejecutable de texto con elGetContextValue
yGetContextString
APIs. La sintaxis de las cadenas JSONPath para acceder al contexto IDT varía de la siguiente manera:
-
En
suite.json
ytest.json
, utiliza{{
. Es decir, no uses el elemento raízquery
}}$.
para empezar tu expresión. -
En
test_orchestrator.yaml
, utiliza{{
.query
}}Si utiliza la máquina de estado obsoleta, entonces en
state_machine.json
, utiliza{{$.
.query
}} -
En los comandos de la API, utilizas
oquery
{{$.
, según el comando. Para obtener más información, consulte la documentación en línea de los SDK.query
}}
En la siguiente tabla se describen los operadores de una expresión JSONPath típica:
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
Región $.config.awsRegion . |
[start:end] |
Filters elements from an array, retrieving items
beginning from the iniciar index and going up to the
fin index, both inclusive. |
[índice 1, índice 2,..., 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. |
Para crear expresiones de filtro, utilice la siguiente sintaxis:
<jsonpath>
|<value>
operator
<jsonpath>
|<value>
En esta sintaxis:
-
jsonpath
es un JSONPath que utiliza sintaxis JSON estándar. -
value
es cualquier valor personalizado que utilice la sintaxis JSON estándar. -
operator
es uno de los siguientes operadores:-
<
(Menor que) -
<=
(Menor o igual que) -
==
(Igual que)Si el valor o JSONPath de su expresión es un valor de matriz, booleano o objeto, este es el único operador binario compatible que puede utilizar.
-
>=
(Mayor o igual que) -
>
(Mayor que) -
=~
(coincidencia de expresiones regulares). Para utilizar este operador en una expresión de filtro, el JSONPath o el valor de la parte izquierda de la expresión deben evaluarse en una cadena y el lado derecho debe ser un valor de patrón que siga elSintaxis RE2.
-
Puede utilizar consultas JSONPath en el formulario {{query
}} como cadenas de marcador de posición dentro delargs
yenvironmentVariables
campos entest.json
archivos y dentro delenvironmentVariables
campos ensuite.json
archivos. IDT realiza una búsqueda de contexto y rellena los campos con el valor evaluado de la consulta. Por ejemplo, en elsuite.json
, puede utilizar cadenas de marcador de posición para especificar valores de variables de entorno que cambian con cada caso de prueba e IDT rellenará las variables de entorno con el valor correcto para cada caso de prueba. Sin embargo, cuando utiliza cadenas de marcador de posición entest.json
ysuite.json
, se aplican las siguientes consideraciones para sus consultas:
-
Debe tener cada vez que se produzca el
devicePool
clave en la consulta en minúsculas. Es decir, usedevicepool
en su lugar. -
Para matrices, solo puede utilizar matrices de cadenas. Además, los arreglos utilizan un elemento no estándar
item1, item2,...,itemN
formato. Si la matriz contiene solo un elemento, se serializa comoitem
, lo que lo hace indistinguible de un campo de cadena. -
No se pueden utilizar marcadores de posición para recuperar objetos del contexto.
Debido a estas consideraciones, recomendamos que, siempre que sea posible, utilice la API para acceder al contexto de su lógica de prueba en lugar de cadenas de marcador de posición entest.json
ysuite.json
archivos. Sin embargo, en algunos casos podría resultar más conveniente utilizar marcadores de posición JSONPath para recuperar cadenas individuales para definirlas como variables de entorno.