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 possono essere utilizzati per determinare come viene eseguito ogni test. Questi dati sono denominati contesto IDT. Ad esempio, la configurazione dei dati utente fornita dai test runner in un userdata.json file viene resa disponibile alle 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, matrici, numeri e così via.
Schema di contesto
Il contesto IDT utilizza il seguente formato:
{ "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-
Informazioni dal config.json file. Il
configcampo contiene anche i seguenti campi aggiuntivi:config.timeoutMultiplier-
Il moltiplicatore per qualsiasi valore di timeout utilizzato dalla suite di test. Questo valore è specificato dal test runner tramite l'IDT CLI. Il valore predefinito è
1. config.idRootPath-
Questo valore è un segnaposto per il valore assoluto del percorso di IDT durante la configurazione del file.
userdata.jsonViene utilizzato dai comandi build e flash.
device-
Informazioni sul dispositivo selezionato per l'esecuzione del test. Queste informazioni sono equivalenti all'elemento dell'
devicesarray nel device.json file per il dispositivo selezionato. devicePool-
Informazioni sul pool di dispositivi selezionato per l'esecuzione del test. Queste informazioni sono equivalenti all'elemento dell'array del pool di dispositivi di primo livello definito nel
device.jsonfile per il pool di dispositivi selezionato. resource-
Informazioni sui dispositivi di risorse dal
resource.jsonfile.resource.devices-
Queste informazioni sono equivalenti all'
devicesarray definito nelresource.jsonfile. Ognideviceselemento include il seguente campo aggiuntivo:resource.device.name-
Il nome del dispositivo risorsa. Questo valore è impostato sul
requiredResource.namevalore neltest.jsonfile.
testData.awsCredentials-
Le AWS credenziali utilizzate dal test per connettersi al AWS cloud. Queste informazioni sono ottenute dal
config.jsonfile. testData.logFilePath-
Il percorso del file di registro in cui il test case scrive i messaggi di registro. La suite di test crea questo file se non esiste.
userData-
Informazioni fornite dal test runner nel userdata.json file.
Accedere ai dati nel contesto
Puoi interrogare il contesto utilizzando la notazione JSONPath dai tuoi file di configurazione e dal tuo file di testo eseguibile con le API and. GetContextValue GetContextString La sintassi delle stringhe JSONPath per accedere al contesto IDT varia come segue:
-
In
suite.jsone, si usa.test.json{{Cioè, non usate l'elemento rootquery}}$.per iniziare la vostra espressione. -
In
statemachine.json, tu usi{{$..query}} -
Nei comandi API, si utilizza
oquery{{$., a seconda del comando. Per ulteriori informazioni, consulta la documentazione in linea negli SDK.query}}
La tabella seguente descrive gli operatori in una tipica espressione JsonPath foobar:
| Operatore | Description |
|---|---|
$ |
Lelemento radice. Poiché il valore di contesto di primo livello per IDT è un oggetto, in genere viene utilizzato $. per avviare le query. |
.childName |
Accede all'elemento figlio con il nome childName di un oggetto. Se applicato a un array, produce un nuovo array con questo operatore applicato a ciascun elemento. Il nome dell'elemento distingue tra maiuscole e minuscole. Ad esempio, la query per accedere al awsRegion valore nell'configoggetto è$.config.awsRegion. |
[start:end] |
Filtra gli elementi da un array, recuperando gli elementi a partire dall'startindice e salendo all'endindice, entrambi inclusi. |
[index1, index2, ... , indexN] |
Filtra gli elementi da un array, recuperando elementi solo dagli indici specificati. |
[?(expr)] |
Filtra gli elementi da un array utilizzando l'espressione. expr Questa espressione deve restituire un valore booleano. |
Per creare espressioni di filtro, utilizzate 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:-
<(Meno di) -
<=(Minore o uguale a) -
==(Uguale a)Se il JSONPath o il valore nell'espressione è un valore di matrice, booleano o oggetto, questo è l'unico operatore binario supportato che puoi usare.
-
>=(Maggiore o uguale a) -
>(Maggiore di) -
=~(Corrispondenza delle espressioni regolari). Per utilizzare questo operatore in un'espressione di filtro, il JSONPath o il valore sul lato sinistro dell'espressione deve restituire una stringa e il lato destro deve essere un valore di pattern che segue la sintassi RE2.
-
È possibile utilizzare le query JSONPath nel formato {{query}} come stringhe segnaposto all'interno dei campi e nei file args e environmentVariables all'interno dei campi dei file. test.json environmentVariables suite.json IDT esegue una ricerca contestuale e popola i campi con il valore valutato della query. Ad esempio, nel suite.json file, è possibile utilizzare stringhe segnaposto per specificare i valori delle variabili di ambiente che cambiano a ogni test case e IDT popolerà le variabili di ambiente con il valore corretto per ogni test case. Tuttavia, quando si utilizzano stringhe segnaposto nei suite.json file test.json e, per le query valgono le seguenti considerazioni:
-
È necessario che ogni occorrenza della
devicePoolchiave nella query sia scritta in lettere minuscole. Cioè, usadevicepoolinvece. -
Per gli array, puoi usare solo matrici di stringhe. Inoltre, gli array utilizzano un formato non standard.
item1, item2,...,itemNSe l'array contiene un solo elemento, viene serializzato comeitem, rendendolo indistinguibile da un campo stringa. -
Non è possibile utilizzare segnaposti per recuperare oggetti dal contesto.
Per queste considerazioni, consigliamo, ove possibile, di utilizzare l'API per accedere al contesto nella logica di test anziché stringhe segnaposto nei file e nei file. test.json suite.json Tuttavia, in alcuni casi potrebbe essere più comodo utilizzare i segnaposti JSONPath per recuperare singole stringhe da impostare come variabili di ambiente.