

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 创建 IDT 测试套件配置文件
<a name="idt-json-config"></a>

本节介绍创建配置文件时使用的格式，您在编写自定义测试套件时包含了这些文件。

**必需配置文件**

**`suite.json`**  
包含有关测试套件的信息。请参阅[配置 suite.json](#suite-json)。

**`group.json`**  
包含有关测试组的信息。您必须为测试套件中的每个测试组创建一个 `group.json` 文件。请参阅[配置 group.json](#group-json)。

**`test.json`**  
包含有关测试用例的信息。您必须为测试套件中的每个测试用例创建一个 `test.json` 文件。请参阅[配置 test.json](#test-json)。

**可选配置文件**

**`test_orchestrator.yaml` 或 `state_machine.json`**  
定义 IDT 运行测试套件时如何运行测试。 SSe [配置 test\$1orchestrator.yaml](#test-orchestrator-config)。  
从 IDT v4.5.2 开始，您可以使用 `test_orchestrator.yaml` 文件来定义测试工作流程。在以前版本的 IDT 中，请使用 `state_machine.json` 文件。有关状态机的信息，请参阅[配置 IDT 状态机](idt-state-machine.md)。

**`userdata_schema.json`**  
定义测试运行器可以在其设置配置中包含的[`userdata.json`文件](set-config-custom.md#userdata-config-custom)架构。`userdata.json` 文件用于存储运行测试所需但 `device.json` 文件中不存在的任何其他配置信息。请参阅[配置 userdata\$1schema.json](#userdata-schema-json)。

配置文件放置在您的 `<custom-test-suite-folder>` 中，如下所示。

```
<custom-test-suite-folder>
└── suite
    ├── suite.json
    ├── test_orchestrator.yaml
    ├── userdata_schema.json
    ├── <test-group-folder>
        ├── group.json
        ├── <test-case-folder>
            └── test.json
```

## 配置 suite.json
<a name="suite-json"></a>

`suite.json` 文件设置环境变量并确定运行测试套件是否需要用户数据。使用以下模板来配置您的 `<custom-test-suite-folder>/suite/suite.json` 文件：

```
{
    "id": "<suite-name>_<suite-version>",
    "title": "<suite-title>",
    "details": "<suite-details>",
    "userDataRequired": true | false,
    "environmentVariables": [
        {
            "key": "<name>",
            "value": "<value>",
        },
        ...
        {
            "key": "<name>",
            "value": "<value>",
        }
    ]
}
```

包含值的所有字段都为必填字段，如下所述：

**`id`**  
测试套件的唯一用户定义 ID。`id` 的值必须与 `suite.json` 文件所在的测试套件文件夹的名称相匹配。套件名称和套件版本还必须满足以下要求：  
+ `<suite-name>` 不可以包含下划线。
+ `<suite-version>` 表示为 `x.x.x`，其中 `x` 为数字。
ID 显示在 IDT 生成的测试报告中。

**`title`**  
此测试套件正在测试的产品或功能的用户定义名称。该名称显示在 IDT CLI 中供测试运行器使用。

**`details`**  
测试套件用途的简短描述。

**`userDataRequired`**  
定义测试运行器是否需要在 `userdata.json` 文件中包含自定义信息。如果将此值设置为 `true`，还必须将[`userdata_schema.json` 文件](#userdata-schema-json)包含在测试套件文件夹中。

**`environmentVariables`**  
可选。一组要为此测试套件设置的环境变量。    
**`environmentVariables.key`**  
环境变量的名称。  
**`environmentVariables.value`**  
环境变量的值。

## 配置 group.json
<a name="group-json"></a>

`group.json` 文件定义测试组是必需的还是可选的。使用以下模板来配置您的 `<custom-test-suite-folder>/suite/<test-group>/group.json` 文件：

```
{
    "id": "<group-id>",
    "title": "<group-title>",
    "details": "<group-details>",
    "optional": true | false,
}
```

包含值的所有字段都为必填字段，如下所述：

**`id`**  
测试组的唯一用户定义 ID。`id` 的值必须与 `group.json` 文件所在的测试组文件夹的名称相匹配，并且不得包含下划线 (`_`)。ID 用于 IDT 生成的测试报告中。

**`title`**  
测试组的描述性名称。该名称显示在 IDT CLI 中供测试运行器使用。

**`details`**  
测试组用途的简短描述。

**`optional`**  
可选。设置为 `true` 以便在 IDT 完成运行所需测试后，将此测试组显示为可选组。默认值为 `false`。

## 配置 test.json
<a name="test-json"></a>

`test.json` 文件确定测试用例的可执行文件和测试用例使用的环境变量。有关创建测试用例可执行文件的更多信息，请参阅 [创建 IDT 测试用例可执行文件](test-executables.md)。

使用以下模板来配置您的 `<custom-test-suite-folder>/suite/<test-group>/<test-case>/test.json` 文件：

```
{
    "id": "<test-id>",
    "title": "<test-title>",
    "details": "<test-details>",
    "requireDUT": true | false,
    "requiredResources": [
        {
            "name": "<resource-name>",
            "features": [
                {
                    "name": "<feature-name>",
                    "version": "<feature-version>",
                    "jobSlots": <job-slots>
                }
            ]
        }
    ],
    "execution": {
        "timeout": <timeout>,
        "mac": {
            "cmd": "/path/to/executable",
            "args": [
                "<argument>"
            ],
        },
        "linux": {
            "cmd": "/path/to/executable",
            "args": [
                "<argument>"
            ],
        },
        "win": {
            "cmd": "/path/to/executable",
            "args": [
                "<argument>"
            ]
        }
    },
    "environmentVariables": [
        {
            "key": "<name>",
            "value": "<value>",
        }
    ]
}
```

包含值的所有字段都为必填字段，如下所述：

**`id`**  
测试用例的唯一用户定义 ID。`id` 的值必须与 `test.json` 文件所在的测试用例文件夹的名称相匹配，并且不得包含下划线 (`_`)。ID 用于 IDT 生成的测试报告中。

**`title`**  
测试用例的描述性名称。该名称显示在 IDT CLI 中供测试运行器使用。

**`details`**  
测试用例用途的简短描述。

**`requireDUT`**  
可选。如果需要设备才能运行此测试，则设置为 `true`，否则设置为 `false`。默认值为 `true`。测试运行器将在其 `device.json` 文件中配置将用来运行测试的设备。

**`requiredResources`**  
可选。一个阵列，提供有关运行此测试所需资源设备的信息。    
**`requiredResources.name`**  
运行此测试时为资源设备提供的唯一名称。  
**`requiredResources.features`**  
一系列用户定义的资源设备功能。    
**`requiredResources.features.name`**  
功能的名称。您要使用此设备的设备功能。此名称与 `resource.json` 文件中测试运行器提供的功能名称相匹配。  
**`requiredResources.features.version`**  
可选。功能的版本。此值与 `resource.json` 文件中测试运行器提供的功能版本相匹配。如果未提供版本，则不检查该功能。如果功能不需要版本号，请将此字段留为空白。  
**`requiredResources.features.jobSlots`**  
可选。此功能可以支持的同时测试的数量。默认值为 `1`。如果您希望 IDT 使用不同的设备来实现各项功能，我们建议您将此值设置为 `1`。

**`execution.timeout`**  
IDT 等待测试完成运行的时间长度（以毫秒为单位）。有关设置该值的更多信息，请参阅 [创建 IDT 测试用例可执行文件](test-executables.md)。

**`execution.os`**  
要运行的测试用例可执行文件基于运行 IDT 的主机操作系统。支持的值有`linux`、`mac`和`win`。    
**`execution.os.cmd`**  
要在指定操作系统上运行的测试用例可执行文件的路径。此位置必须位于系统路径中。  
**`execution.os.args`**  
可选。为运行测试用例可执行文件而提供的参数。

**`environmentVariables`**  
可选。一组要为此测试用例设置的环境变量。    
**`environmentVariables.key`**  
环境变量的名称。  
**`environmentVariables.value`**  
环境变量的值。
如果在 `test.json` 文件和 `suite.json` 文件中指定相同的环境变量，则 `test.json` 文件中的值优先。

## 配置 test\$1orchestrator.yaml
<a name="test-orchestrator-config"></a>

测试编排工具是一种控制测试套件执行流程的构造。它决定测试套件的起始状态，根据用户定义的规则管理状态转换，并继续在这些状态之间进行转换，直到达到结束状态。

如果您的测试套件不包含用户定义的测试编排工具，IDT 将为您生成一个测试编排工具。

默认测试编排工具执行以下功能：
+ 使测试运行器能够选择和运行特定的测试组，而不是整个测试套件。
+ 如果未选择特定的测试组，则按随机顺序运行测试套件中的每个测试组。
+ 生成报告并打印控制台摘要，其中显示每个测试组和测试用例的测试结果。

有关 IDT 测试编排工具工作原理的更多信息，请参阅[配置 IDT 测试编排工具](idt-test-orchestrator.md)。

## 配置 userdata\$1schema.json
<a name="userdata-schema-json"></a>

`userdata_schema.json` 文件确定了测试运行器提供用户数据的架构。如果您的测试套件需要 `device.json` 文件中不存在的信息，则需要用户数据。例如，您的测试可能需要 Wi-Fi 网络凭证、特定的开放端口或用户必须提供的证书。此信息可提供给 IDT，作为用户在其 `<device-tester-extract-location>/config` 文件夹中创建的输入参数，称为 `userdata`，其值是一个 `userdata.json` 文件。`userdata.json` 文件的格式取决于您在测试套件中包含的 `userdata_schema.json` 文件。

要指示测试运行器必须提供 `userdata.json` 文件：

1. 在 `suite.json` 文件中设置 `userDataRequired` 为 `true`。

1. 在您的 `<custom-test-suite-folder>` 中，创建一个 `userdata_schema.json` 文件。

1. 编辑 `userdata_schema.json` 文件以创建有效的 [IETF 草稿 v4 JSON 架构](https://json-schema.org/specification-links#draft-4)。

当 IDT 运行您的测试套件时，它会自动读取架构并使用它来验证测试运行器提供的 `userdata.json` 文件。如果有效，则 `userdata.json` 文件的内容在 [IDT 上下文](idt-context.md)和[测试编排工具上下文](idt-test-orchestrator.md#idt-test-orchestrator-context)中均可用。