Gunakan IDT konteksnya - Gratis RTOS

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Gunakan IDT konteksnya

Saat IDT menjalankan rangkaian pengujian, rangkaian pengujian dapat mengakses sekumpulan data yang dapat digunakan untuk menentukan bagaimana setiap pengujian berjalan. Data ini disebut IDT konteks. Misalnya, konfigurasi data pengguna yang disediakan oleh runner pengujian dalam userdata.json file tersedia untuk menguji suite dalam IDT konteks.

IDTKonteksnya dapat dianggap sebagai dokumen hanya-bacaJSON. Test suite dapat mengambil data dari dan menulis data ke konteks menggunakan tipe JSON data standar seperti objek, array, angka dan sebagainya.

Skema konteks

IDTKonteksnya menggunakan format berikut:

{ "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

Informasi dari config.json file. configBidang ini juga berisi bidang tambahan berikut:

config.timeoutMultiplier

Pengganda untuk setiap nilai batas waktu yang digunakan oleh rangkaian tes. Nilai ini ditentukan oleh test runner dari file. IDT CLI Nilai default-nya adalah 1.

config.idRootPath

Nilai ini adalah placeholder untuk nilai jalur absolut IDT saat mengkonfigurasi file. userdata.json Ini digunakan oleh perintah build dan flash.

device

Informasi tentang kolam perangkat yang dipilih untuk uji coba. Informasi ini setara dengan elemen rangkaian devices dalam file device.json untuk perangkat yang dipilih.

devicePool

Informasi tentang kolam perangkat yang dipilih untuk uji coba. Informasi ini setara dengan elemen rangkaian kolam perangkat tingkat ata yang ditentukan di file device.json untuk kolam perangkat yang dipilih.

resource

Informasi tentang perangkat sumber daya dari file resource.json.

resource.devices

Informasi ini setara dengan rangkaian devices yang ditentukan dalam file resource.json. Setiap elemen devices mencakup kolom tambahan berikut:

resource.device.name

Nama sumber daya. Nilai ini diatur ke nilai requiredResource.name pada file test.json.

testData.awsCredentials

AWS Kredensi yang digunakan oleh tes untuk terhubung ke cloud. AWS Informasi ini diperoleh dari file config.json.

testData.logFilePath

Path ke file log di mana uji kasus menuliskan pesan log. Rangkaian tes membuat file ini jika tidak ada.

userData

Informasi yang diberikan oleh test runner di file userdata.json.

Akses data dalam konteks

Anda dapat menanyakan konteks menggunakan JSONPath notasi dari file konfigurasi Anda dan dari teks yang dapat dieksekusi dengan dan. GetContextValue GetContextString APIs Sintaks untuk JSONPath string untuk mengakses IDT konteks bervariasi sebagai berikut:

  • Pada suite.json dan test.json, Anda menggunakan {{query}}. Artinya, jangan gunakan elemen root $. untuk memulai ekspresi Anda.

  • Pada statemachine.json, Anda menggunakan {{$.query}}.

  • Dalam API perintah, Anda menggunakan query atau{{$.query}}, tergantung pada perintah. Untuk informasi selengkapnya, lihat dokumentasi sebaris di. SDKs

Tabel berikut menjelaskan operator dalam JSONPath ekspresi foobar khas:

Operator Deskripsi
$ Elemen root. Karena nilai konteks tingkat atas untuk IDT adalah objek, Anda biasanya akan menggunakan $. untuk memulai kueri Anda.
.childName Mengakses elemen anak dengan nama childName dari objek. Jika diterapkan ke array, menghasilkan array baru dengan operator ini diterapkan ke setiap elemen. Nama elemen peka huruf besar/kecil. Misalnya, kueri untuk mengakses awsRegion nilai dalam config objek adalah$.config.awsRegion.
[start:end] Memfilter elemen dari array, mengambil item yang dimulai dari start indeks dan naik ke end indeks, keduanya inklusif.
[index1, index2, ... , indexN] Memfilter elemen dari array, mengambil item dari hanya indeks yang ditentukan.
[?(expr)] Menyaring elemen dari array menggunakan expr ekspresi. Ekspresi ini harus mengevaluasi nilai boolean.

Untuk membuat ekspresi filter, gunakan sintaks berikut:

<jsonpath> | <value> operator <jsonpath> | <value>

Dalam sintaks ini:

  • jsonpathadalah JSONPath yang menggunakan JSON sintaks standar.

  • valueadalah nilai khusus apa pun yang menggunakan JSON sintaks standar.

  • operator adalah salah satu dari operator berikut ini:

    • < (Kurang dari)

    • <= (Kurang dari atau sama dengan)

    • == (Sama dengan)

      Jika nilai JSONPath atau dalam ekspresi Anda adalah nilai array, boolean, atau objek, maka ini adalah satu-satunya operator biner yang didukung yang dapat Anda gunakan.

    • >= (Lebih besar dari atau sama dengan)

    • > (Lebih besar dari)

    • =~ (Kecocokan ekspresi reguler). Untuk menggunakan operator ini dalam ekspresi filter, nilai JSONPath or di sisi kiri ekspresi Anda harus mengevaluasi ke string dan sisi kanan harus berupa nilai pola yang mengikuti RE2sintaks.

Anda dapat menggunakan JSONPath kueri dalam formulir {{query}} sebagai string placeholder di dalam args dan environmentVariables bidang dalam test.json file dan dalam environmentVariables bidang dalam file. suite.json IDTmelakukan pencarian konteks dan mengisi bidang dengan nilai kueri yang dievaluasi. Misalnya, dalam suite.json file, Anda dapat menggunakan string placeholder untuk menentukan nilai variabel lingkungan yang berubah dengan setiap kasus uji dan IDT akan mengisi variabel lingkungan dengan nilai yang benar untuk setiap kasus uji. Namun, ketika Anda menggunakan string placeholder di file test.json dan suite.json, pertimbangan berikut berlaku untuk kueri Anda:

  • Anda harus menuliskan setiap kejadian kunci devicePool dalam kueri Anda semua dengan huruf kecil. Artinya, gunakan devicepool sebagai gantinya

  • Untuk rangkaian, Anda hanya dapat menggunakan rangkaian string. Selain itu, rangkaian menggunakan format item1, item2,...,itemN non-standar. Jika rangkaian tersebut hanya berisi satu elemen, maka rangkaian itu akan diserialkan sebagai item, sehingga menjadikannya tidak dapat dibedakan dari kolom string.

  • Anda tidak dapat menggunakan placeholder untuk mengambil objek dari konteks.

Karena pertimbangan ini, kami merekomendasikan bahwa bila memungkinkan, Anda menggunakan API untuk mengakses konteks dalam logika pengujian Anda alih-alih string placeholder dalam dan file. test.json suite.json Namun, dalam beberapa kasus mungkin lebih mudah menggunakan JSONPath placeholder untuk mengambil string tunggal untuk ditetapkan sebagai variabel lingkungan.