Usa il IDT contesto - Gratuito RTOS

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 IDT contesto

Quando IDT esegue una suite di test, la suite di test può accedere a un set di dati che possono essere utilizzati per determinare la modalità di esecuzione di ciascun test. Questi dati sono chiamati IDT contesto. Ad esempio, la configurazione dei dati utente fornita dai test runner in un userdata.json file viene resa disponibile alle suite di test nel IDT contesto.

Il IDT contesto può essere considerato un documento di sola letturaJSON. Le suite di test possono recuperare dati e scrivere dati nel contesto utilizzando tipi di JSON dati standard come oggetti, matrici, numeri e così via.

Schema contestuale

Il IDT contesto 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.jsonfile. Il config campo contiene anche i seguenti campi aggiuntivi:

config.timeoutMultiplier

Il moltiplicatore per l'eventuale valore di timeout utilizzato dalla suite di test. Questo valore è specificato dal test runner di. IDT CLI Il valore predefinito è 1.

config.idRootPath

Questo valore è un segnaposto per il valore assoluto del percorso IDT durante la configurazione del file. userdata.json Viene 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.jsonfile 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.json file per il pool di dispositivi selezionato.

resource

Informazioni sui dispositivi di risorse contenute nel resource.json file.

resource.devices

Queste informazioni sono equivalenti all'devicesarray definito nel resource.json file. Ogni devices elemento include il seguente campo aggiuntivo:

resource.device.name

Il nome del dispositivo di risorse. Questo valore è impostato sul requiredResource.name valore del test.json file.

testData.awsCredentials

Le AWS credenziali utilizzate dal test per connettersi al AWS cloud. Queste informazioni sono ottenute dal config.json file.

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.jsonfile.

Accedere ai dati nel contesto

È possibile interrogare il contesto utilizzando la JSONPath notazione dei file di configurazione e quella del testo eseguibile con GetContextValue and GetContextStringAPIs. La sintassi con cui JSONPath le stringhe accedono al IDT contesto varia come segue:

  • In suite.json etest.json, si usa. {{query}} Cioè, non usate l'elemento root $. per iniziare l'espressione.

  • Instatemachine.json, si usa{{$.query}}.

  • Nei API comandi, si usa query o{{$.query}}, a seconda del comando. Per ulteriori informazioni, consultate la documentazione in linea contenuta in. SDKs

La tabella seguente descrive gli operatori in una tipica espressione foobarJSONPath:

Operatore Descrizione
$ Lelemento radice. Poiché il valore di contesto di primo livello per IDT è un oggetto, in genere lo utilizzerai $. per avviare le query.
.childName Accede all'elemento secondario con il nome childName di un oggetto. Se applicato a un array, restituisce 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 una matrice, recuperando gli elementi che iniziano dall'startindice e risalgono all'endindice, entrambi inclusi.
[index1, index2, ... , indexN] Filtra gli elementi da un array, recuperando gli elementi solo dagli indici specificati.
[?(expr)] Filtra gli elementi di 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è una JSONPath che utilizza una JSON sintassi standard.

  • valueè qualsiasi valore personalizzato che utilizza la JSON sintassi standard.

  • operatorè uno dei seguenti operatori:

    • <(Meno di)

    • <=(Minore o uguale a)

    • ==(Uguale a)

      Se il valore JSONPath o nell'espressione è un array, un valore booleano o un valore di oggetto, questo è l'unico operatore binario supportato che è possibile utilizzare.

    • >=(Maggiore o uguale a)

    • >(Maggiore di)

    • =~(Corrispondenza delle espressioni regolari). Per utilizzare questo operatore in un'espressione di filtro, il valore JSONPath o sul lato sinistro dell'espressione deve restituire una stringa e il lato destro deve essere un valore di modello che segue la RE2sintassi.

È possibile utilizzare JSONPath le interrogazioni nel formato {{query}} come stringhe segnaposto all'interno dei environmentVariables campi args e nei campi test.json dei file. environmentVariables suite.json IDTesegue 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 con ogni test case e IDT popoleranno le variabili di ambiente con il valore corretto per ogni test case. Tuttavia, quando utilizzate stringhe segnaposto in suite.json file test.json e, per le vostre query, valgono le seguenti considerazioni:

  • È necessario che ogni occorrenza della devicePool chiave nella query sia scritta interamente in lettere minuscole. Cioè, usa devicepool invece.

  • Per gli array, è possibile utilizzare solo matrici di stringhe. Inoltre, gli array utilizzano un formato non standard. item1, item2,...,itemN Se l'array contiene solo un elemento, viene serializzato comeitem, rendendolo indistinguibile da un campo di stringa.

  • Non è possibile utilizzare segnaposti per recuperare oggetti dal contesto.

Alla luce di queste considerazioni, si consiglia di utilizzare, quando possibile, API per accedere al contesto nella logica di test anziché stringhe segnaposto nei file e. test.json suite.json Tuttavia, in alcuni casi potrebbe essere più comodo utilizzare i JSONPath segnaposto per recuperare singole stringhe da impostare come variabili di ambiente.