Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Usa il contesto IDT
Quando IDT esegue una suite di test, la suite di test può accedere a un set di dati che è possibile utilizzare per determinare l'esecuzione di ciascun test. Questi dati sono chiamati contesto IDT. Ad esempio, la configurazione dei dati utente fornita dai test runner in unuserdata.json
il file è reso disponibile per le suite di test nel contesto IDT.
Il contesto IDT può essere considerato un documento JSON di sola lettura. Le suite di test possono recuperare dati e scrivere dati nel contesto utilizzando tipi di dati JSON standard come oggetti, array, numeri e così via.
Schema del contesto
Il contesto IDT utilizza il seguente 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
-
Informazioni dalconfig.jsondocumento. La
config
field contiene anche il seguente campo aggiuntivo:config.timeoutMultiplier
-
Il moltiplicatore per il valore di qualsiasi timeout utilizzato dalla suite di test. Questo valore è specificato dal test runner della CLI IDT. Il valore di default è
1
.
device
-
Informazioni sul dispositivo selezionato per l'esecuzione di test. Queste informazioni sono equivalenti al
devices
elemento array neldevice.jsondocumentoper il dispositivo selezionato. devicePool
-
Informazioni sul pool di dispositivi selezionato per l'esecuzione del test. Queste informazioni sono equivalenti all'elemento array del pool di dispositivi di livello superiore definito nella
device.json
file per il pool di dispositivi selezionato. resource
-
Informazioni sui dispositivi di risorse dal
resource.json
file.resource.devices
-
Queste informazioni sono equivalenti al
devices
array definito nelresource.json
file. Ciascunodevices
include il seguente campo aggiuntivo:resource.device.name
-
Il nome del dispositivo delle risorse. Questo valore è impostato sul
requiredResource.name
neltest.json
file.
testData.awsCredentials
-
LaAWScredenziali utilizzate dal test per connettersi alAWSnuvola. Queste informazioni sono ottenute dal
config.json
file. testData.logFilePath
-
Il percorso del file di log in cui il test case scrive i messaggi di log. Se non esiste, la suite di test crea questo file.
userData
-
Informazioni fornite dal corridore di prova nellauserdata.jsondocumento.
Accesso ai dati nel contesto
È possibile eseguire query sul contesto utilizzando la notazione JSONPath dai file JSON e dal file eseguibile di testo con ilGetContextValue
eGetContextString
API. La sintassi per le stringhe JsonPath per accedere al contesto IDT varia come segue:
-
Nello stato
suite.json
etest.json
, utilizzi{{
. Cioè, non utilizzare l'elemento radicequery
}}$.
per iniziare la tua espressione. -
Nello stato
test_orchestrator.yaml
, utilizzi{{
.query
}}Se si utilizza la macchina a stato deprecato, quindi in
state_machine.json
, utilizzi{{$.
.query
}} -
Nei comandi API, utilizzi
oquery
{{$.
, a seconda del comando. Per ulteriori informazioni, consulta la documentazione in linea negli SDK.query
}}
Nella tabella seguente vengono descritti gli operatori di un'espressione JSONPath tipica:
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
Nome figlio 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
Regione $.config.aws . |
[inizio:fine] |
Filters elements from an array, retrieving items
beginning from the avvio index and going up to the
fine 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. |
Per creare espressioni di filtro, utilizzare la seguente sintassi:
<jsonpath>
|<value>
operator
<jsonpath>
|<value>
In questa sintassi:
-
jsonpath
è un JSONPath che utilizza la sintassi JSON standard. -
value
è un valore personalizzato che utilizza la sintassi JSON standard. -
operator
è uno dei seguenti operatori:-
<
(Minore di) -
<=
(Minore di o uguale a) -
==
(Equal to)Se il valore o JsonPath nell'espressione è un valore di array, booleano o oggetto, questo è l'unico operatore binario supportato che è possibile utilizzare.
-
>=
(Maggiore di o uguale a) -
>
(Maggiore di) -
=~
(Corrispondenza dell'espressione regolare). Per utilizzare questo operatore in un'espressione di filtro, il valore JsonPath o sul lato sinistro dell'espressione deve essere valutato in una stringa e il lato destro deve essere un valore di pattern che segue ilSintassi RE2.
-
È possibile utilizzare le query JsonPath nel modulo {{domanda
}} come stringhe segnaposto all'interno delargs
eenvironmentVariables
campi intest.json
file e all'interno delenvironmentVariables
campi insuite.json
file. IDT esegue una ricerca di contesto e popola i campi con il valore valutato della query. Ad esempio, nelsuite.json
file, è possibile utilizzare stringhe segnaposto per specificare i valori delle variabili di ambiente che cambiano con ogni test case e IDT popolerà le variabili di ambiente con il valore corretto per ogni test case. Tuttavia, quando si utilizzano stringhe segnaposto intest.json
esuite.json
, per le tue query si applicano le seguenti considerazioni:
-
È necessario ogni occorrenza del
devicePool
chiave nella tua query in minuscolo. Cioè, usadevicepool
invece. -
Per gli array, è possibile utilizzare solo array di stringhe. Inoltre, gli array utilizzano uno standard non standard
item1, item2,...,itemN
. Se l'array contiene un solo elemento, viene serializzato comeitem
, rendendolo indistinguibile da un campo stringa. -
Non è possibile utilizzare i segnaposto per recuperare oggetti dal contesto.
A causa di queste considerazioni, ti consigliamo di utilizzare l'API per accedere al contesto nella logica di test invece di stringhe segnaposto intest.json
esuite.json
file. Tuttavia, in alcuni casi potrebbe essere più conveniente utilizzare i segnaposto JsonPath per recuperare stringhe singole da impostare come variabili di ambiente.