[comment]: # ({d3fd8a91-0aa26ab0})
# 1 预处理测试

[comment]: # ({/d3fd8a91-0aa26ab0})

[comment]: # ({c929b4b7-ad67af50})
### 测试

测试预处理步骤有助于确保复杂的预处理流水线能够产生预期结果，而无需等待监控项值被接收并完成预处理。

![](../../../../../assets/en/manual/config/items/test_item_steps.png){width="600"}

可以测试：

-   针对一个假设值
-   针对来自主机的真实值

每个预处理步骤都可以单独测试，也可以将所有步骤一起测试。当你在 Actions 区块中分别点击 *Test* 或 *Test all steps* 按钮时，会打开一个测试窗口。

[comment]: # ({/c929b4b7-ad67af50})

[comment]: # ({d62b94bd-45423233})
##### 测试假设值

![](../../../../../assets/en/manual/config/items/test_item_p.png){width="600"}

|Parameter|Description|
|--|--------|
|*Get value from host*|如果要测试假设值，请不要勾选此复选框。<br>另请参见：[测试真实值](#testing-real-value)。|
|*Value*|输入要测试的输入值。<br>单击参数字段或查看/编辑按钮 ![](../../../../../assets/en/manual/config/items/pencil.png) 将打开一个文本区域窗口，用于输入值或代码块。|
|*Not supported*|勾选此复选框以测试不受支持的值。<br>此选项适用于测试 *Check for not supported value* 预处理步骤。|
|*Error*|输入错误文本。<br>当未勾选 *Get value from host*，但已勾选 *Not supported* 时，此字段可用。<br>如果勾选了 *Get value from host*，则此字段会填入来自主机的实际错误消息（只读）。|
|*Time*|显示输入值的时间：`now`（只读）。|
|*Previous value*|输入要比较的上一个输入值。<br>仅适用于 *Change* 和 *Throttling* 预处理步骤。|
|*Previous time*|输入要比较的上一个输入值时间。<br>仅适用于 *Change* 和 *Throttling* 预处理步骤。<br>默认值基于监控项的 'Update interval' 字段值（如果为 '1m'，则此字段填充为 `now-1m`）。如果未指定任何内容，或者用户无权访问主机，则默认值为 `now-30s`。|
|*Macros*|如果使用了任何宏，它们会连同其值一起列出。为便于测试，这些值可以编辑，但更改只会保存在测试上下文中。|
|*End of line sequence*|为多行输入值选择行尾序列：<br>**LF** - LF（换行）序列<br>**CRLF** - CRLF（回车换行）序列。|
|*Preprocessing steps*|会列出预处理步骤；点击 *Test* 按钮后，会显示每个步骤的测试结果。<br>测试结果在发送到前端时会被截断，最大大小为 512KB。测试结果可以复制（不超过截断后的 512KB）。如果结果被截断，会显示警告图标。将鼠标悬停在警告上会显示说明。请注意，超过 512KB 的数据仍会由 Zabbix 服务器完整处理。<br>如果某个步骤在测试中失败，会显示错误图标。将鼠标悬停在错误上会显示说明。<br>如果为该步骤指定了 "Custom on fail" 且执行了该操作，则会在预处理测试步骤行的下一行显示一条新记录，说明执行了什么操作以及产生了什么结果（错误或值）。|
|*Result*|当所有步骤一起测试时（即单击 *Test all steps* 按钮），无论何种情况，都会显示预处理步骤测试的最终结果。<br>还会显示转换为监控项值类型的类型转换结果，例如 `Result converted to Numeric (unsigned)`。<br>测试结果在发送到前端时会被截断，最大大小为 512KB。最终结果可以复制（不超过截断后的 512KB）。如果结果被截断，会显示警告图标。将鼠标悬停在警告上会显示说明。请注意，超过 512KB 的数据仍会由 Zabbix 服务器完整处理。|

单击 *Test* 可查看每个预处理步骤后的结果。

测试值会在单个步骤或所有步骤的测试会话之间保存，方便用户更改预处理步骤或监控项配置后返回测试窗口，而无需重新输入信息。不过，刷新页面后这些值会丢失。

测试由 Zabbix 服务器执行。前端向服务器发送相应请求并等待结果。请求包含输入值和预处理步骤（已展开用户宏）。对于 *Change* 和 *Throttling* 步骤，可以指定可选的上一个值和时间。服务器会返回每个预处理步骤的结果。

所有技术错误或输入验证错误都会显示在测试窗口顶部的错误框中。

[comment]: # ({/d62b94bd-45423233})

[comment]: # ({04cfec48-43637da5})
##### 测试真实值

要针对真实值测试预处理：

-   勾选 *从主机获取值* 复选框
-   输入或确认主机参数（主机地址、端口、proxy 名称/无 proxy）以及监控项特定详情（例如 SNMPv2 community 或 SNMPv3 安全凭据）。这些字段具有上下文感知能力：
    -   在可能的情况下会预填充值，即对于需要 agent 的监控项，会从主机所选的 agent 接口获取信息
    -   模板监控项必须手动填写这些值
    -   会解析纯文本宏值
    -   如果字段值（或部分值）是密文或 Vault 宏，则该字段将为空，必须手动填写。如果任何监控项参数包含密文宏值，则会显示以下警告信息："Item contains user-defined macros with secret values. Values of these macros should be entered manually."
    -   当在监控项类型的上下文中不需要某些字段时，这些字段会被禁用（例如，对于计算型监控项，主机地址和 proxy 字段会被禁用）
-   单击 *获取值并测试* 以测试预处理

![](../../../../../assets/en/manual/config/items/test_item_p2.png){width="600"}

如果您在监控项配置表单中指定了值映射（'显示值' 字段），监控项测试对话框会在最终结果之后再显示一行，名为 '应用值映射后的结果'。

从主机获取真实值时特有的参数：

|Parameter|Description|
|--|--------|
|*从主机获取值*|勾选此复选框可从主机获取真实值。|
|*主机地址*|输入主机地址。<br>此字段会自动填入监控项主机接口的地址。|
|*端口*|输入主机端口。<br>此字段会自动填入监控项主机接口的端口。|
|*SNMP 接口的附加字段<br>(SNMP 版本、SNMP community、Context name 等)*|有关配置 SNMP 接口（v1、v2 和 v3）的更多详细信息，请参见 [配置 SNMP 监控](/manual/config/items/itemtypes/snmp#step-2)。<br>这些字段会从监控项主机接口自动填充。|
|*Proxy*|如果主机由 proxy 监控，请指定 proxy。<br>此字段会自动填入主机的 proxy（如果有）。|
|*值*|从主机检索到的值。<br>单击参数字段或查看/编辑按钮 ![](../../../../../assets/en/manual/config/items/pencil.png) 将打开一个文本区域窗口，用于显示该值或代码块。<br>值在前端中最多会被截断为 512KB。若结果被截断，会显示警告图标。将鼠标悬停在警告说明上可查看详细信息。请注意，超过 512KB 的数据仍会由 Zabbix 服务器完整处理。|

其余参数请参见上文的 [测试假设值](#testing-hypothetical-value)。

[comment]: # ({/04cfec48-43637da5})
