選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

使用 IDT 內容

焦點模式
使用 IDT 內容 - AWS IoT Greengrass

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

當 IDT 執行測試套件時,測試套件可以存取一組資料,用於判斷每個測試的執行方式。此資料稱為 IDT 內容。例如,由 userdata.json 檔案中的測試執行器提供的使用者資料組態,可用於在 IDT 內容中測試套件。

IDT 內容可以視為唯讀 JSON 文件。測試套件可以使用標準 JSON 資料類型,例如物件、陣列、數字等,從 擷取資料並將資料寫入內容。

內容結構描述

IDT 內容使用下列格式:

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

來自 config.json 檔案的資訊。config 欄位也包含下列其他欄位:

config.timeoutMultiplier

測試套件所使用的任何逾時值的乘數。此值由 IDT CLI 的測試執行器指定。預設值為 1

device

為測試執行選取的裝置的相關資訊。此資訊等同於所選裝置device.json檔案中devices陣列元素。

devicePool

為測試執行選取之裝置集區的相關資訊。此資訊等同於在所選裝置集區device.json檔案中定義的最上層裝置集區陣列元素。

resource

檔案中資源裝置的相關資訊resource.json

resource.devices

此資訊等同於 resource.json 檔案中定義的devices陣列。每個devices元素都包含下列其他欄位:

resource.device.name

資源裝置的名稱。此值會設定為 test.json 檔案中的requiredResource.name值。

testData.awsCredentials

測試用來連線至 AWS 雲端的 AWS 登入資料。此資訊是從 config.json 檔案取得。

testData.logFilePath

測試案例寫入日誌訊息的日誌檔案路徑。測試套件會在檔案不存在時建立此檔案。

userData

userdata.json 檔案中測試執行器提供的資訊。

存取內容中的資料

您可以使用 JSON 檔案的 JSONPath 表示法,以及使用 GetContextValueGetContextString APIs 的可執行文字來查詢內容。用於存取 IDT 內容的 JSONPath 字串語法會有所不同,如下所示:

  • suite.json和 中test.json,您可以使用 {{query}}。也就是說,請勿使用根元素$.來啟動表達式。

  • 在 中test_orchestrator.yaml,您使用 {{query}}

    如果您使用已棄用的狀態機器,則在 中state_machine.json,您可以使用 {{$.query}}

  • 在 API 命令中,您可以使用 query{{$.query}},視命令而定。如需詳細資訊,請參閱 SDKs中的內嵌文件。

下表說明典型 JSONPath 表達式中的運算子:

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 $.config.awsRegion.
【開始:結束】 Filters elements from an array, retrieving items beginning from the 入門 index and going up to the end 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.

若要建立篩選條件表達式,請使用下列語法:

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

在此語法中:

  • jsonpath 是使用標準 JSON 語法的 JSONPath。

  • value 是使用標準 JSON 語法的任何自訂值。

  • operator 是下列其中一個運算子:

    • < (小於)

    • <= (小於或等於)

    • == (等於)

      如果表達式中的 JSONPath 或 值是陣列、布林值或物件值,則這是您唯一可以使用的支援二進位運算子。

    • >= (大於或等於)

    • > (大於)

    • =~ (規則表達式比對)。若要在篩選條件表達式中使用此運算子,表達式左側的 JSONPath 或值必須評估為字串,而右側必須是遵循 RE2 語法的模式值。

您可以使用格式為 {{query}} 的 JSONPath 查詢,做為test.json檔案中 argsenvironmentVariables 欄位的預留位置字串,以及suite.json檔案中 environmentVariables 的欄位。IDT 會執行內容查詢,並將查詢的評估值填入欄位。例如,在 suite.json 檔案中,您可以使用預留位置字串來指定環境變數值,這些值會隨每個測試案例而變更,IDT 會將每個測試案例的正確值填入環境變數。不過,當您在 test.jsonsuite.json 檔案中使用預留位置字串時,下列考量適用於您的查詢:

  • 在所有小情況下,您必須每次在查詢中出現 devicePool金鑰。也就是說,請devicepool改用 。

  • 對於陣列,您只能使用字串陣列。此外,陣列使用非標準item1, item2,...,itemN格式。如果陣列只包含一個元素,則會將其序列化為 item,使其與字串欄位不區分。

  • 您無法使用預留位置從內容擷取物件。

由於這些考量,我們建議您盡可能使用 API 來存取測試邏輯中的內容,而不是 test.jsonsuite.json 檔案中的預留位置字串。不過,在某些情況下,使用 JSONPath 預留位置來擷取單一字串以設定為環境變數可能會更方便。

在本頁面

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。