本主题解释如何在 SOAtest 和 Virtualize 中配置并应用 JSON 数据库。此工具提取 JSON 值(比如,从请求或响应消息中),以便在其他地方使用。还可以将数据发送到可写数据源,并在扩展工具中进行访问,也可以将数据发送到变量,以便在测试、响应程序或操作套件中方便地重用。
本章包含:
迁移注意事项
在 9.7 版本中重新实现了 JSON 数据库工具。不支持以前版本实现:任何现有工具都将继续工作,但是你添加的所有新的 JSON 数据库都将使用新的实现。
本主题关注当前 JSON 数据库实现。有关已弃用 JSON 数据库的更多详情,请查阅 不支持 JSON 数据库。
了解 JSON 数据库
此工具允许提取特定的 JSON 值(比如,从请求或响应消息中),以便在其他地方使用。JSON 数据库工具可以链接到任何其他输出 JSON 的工具。它可以提取 JSON 中的任何信息,并使这些信息可供以后使用。
例如,可以配置测试银行服务交易的测试套件。该测试套件的测试 1 可以使用用户 ID 登录到服务中,然后 JSON 响应将向测试 1 返回一个会话 ID。可以将该测试套件的测试 2 配置为使用测试 1 的会话 ID,以执行交易。可以在测试套件中配置任何测试,以使用 JSON 响应参数作为 JSON 请求参数。
用户通常在对工具(如 REST 客户机或消息传递客户机)中的值进行参数化时,通过访问“Use Data Source Wizard”以在 SOAtest 中配置 JSON 数据库。这将提供一个快速、直观和自动化的方法来从一个工具中提取数据并在另一个工具中使用它。只需转到要插入提取数据的工具,然后使用向导指定要提取什么数据(比如,该数据来自什么工具)。这是将在 后续测试教程中使用的存储结果中演示的使用模型 。同样的方法也可用于提取用于设置变量的数据。或者,可以手动配置 JSON 数据库工具来从一个工具中提取数据,然后手动配置其他工具来使用提取到的值。
你可以在 Virtualize 中使用 JSON 数据库。比如,若要从传入请求中提取一个值,并使用它填充在接收请求时要发送的响应元素。使用向导从流量创建虚拟资产时,可以手动配置 JSON 数据库。此外,可以使用“Use Data Source Wizard”来提取值并使用它作为响应中的参数化值。对于消息响应程序,可以从传入请求(主体或数据头)中提取值;对于其他工具(比如操作套件中使用的工具),可以从套件中的其他工具提取值。另一个选项则是手动添加一个提取所需数据的 JSON 数据库工具(作为到现有工具的输出),然后配置其他工具来使用提取到的值。
视频教程
在本视频中,你将了解到如何从 JSON 响应中提取值,并在其他测试中重复使用它们。
使用数据源向导配置 JSON 数据库
配置提取物
若要使用“Use Data Source Wizard”向导来配置一个 JSON 数据库:
(不适用于消息响应程序) 确保有一个包含至少两个工具的测试套件或操作集。
- 在要使用提取值的工具的配置面板中,选择一个可用的表单视图。
- 跳转到要使用提取值的 message 元素,然后从可用下拉菜单中选择 Parameterized 和 Use Data Source Wizard 。
- 在打开的向导中:
- 对于测试和操作套件工具,选择要从中提取值的工具。面板顶部的下拉菜单将包含正在配置的当前工具之前发生的测试或响应程序套件中的所有工具。例如,如果正在配置工具 4,则工具 1,2 和 3 将在此菜单中显示,以及任何可用的数据源。
对于消息响应程序,选择要从中提取值的传入请求消息,然后指定是否要从消息主体或消息数据头中提取值。在“预期消息(Expected Message)”下,指示要提取什么元素,然后单击 Add。后侧面板列出了为提取物配置的并显示了将存储这些值的数据源列的名称(如果保留默认设置)。
如果稍后你希望指定额外选项(比如,如果希望更改用来存储值的列名,则希望值保存到可写数据源汇总,或者希望值存储到现有变量);或者,如果希望修改所引用的元素,则选择右侧表中合适的元素并单击 Modify。接下来,根据需求配置选项,然后单击 OK。
关于如何使用该对话框来配置其他选项的更多详情,请查阅 JSON 选择器参考。
手动配置 JSON 数据库
你还可以手动将 JSON 数据库工具链接到测试、响应器或操作套件中的工具。若要配置 JSON 数据库作为链接工具,请完成以下内容:(不适用于消息响应程序)
确保有一个包含至少两个工具的测试套件或操作集。
右键单击与要提取的数据相关联的工具节点。(比如,如果要从传入请求或输出响应中提取值,则选择处理这些消息的消息响应程序),然后选择 Add Output。
在 Add Output 向导中,这表明要从哪里提取值。(比如,传入请求、传输数据头、传入附件、输出响应等等),从工具列表选择 JSON Data Bank ,然后单击 Finish 按钮。将在工具下方显示 JSON Data Bank 节点。
- 配置工具,如下所示:
使用可用控件指定要提取的元素。若要提取元素,请从 JSON 树中选择一个值并单击 Extract Element 按钮。添加的值将显示在 Selected Element 列表,该列表有一个列名为 Data Source,其中包含值所来自的工具的名称和提取到的值。
如果稍后要修改提取引用的元素,请单击 Modify,然后根据需求对其进行修改。有关更多详情,请查阅 JSON 选择器参考 。
- 根据需求重复步骤 a 和 b,以配置要执行的任何其他提取物。
- 在 JSON 数据库配置面板底部区域,根据需求自定义选项。有关更多详情,请查阅 Tool Options 。
使用提取值
添加和/或修改提取物之后,配置要使用提取值的工具。
将值设置为 Parameterized,并从下拉菜单中选择合适项。例如, 如将值保存到 "title” 数据源列,则将按如下方式选择它。
工具选项
以下选项可以在 JSON 数据库工具配置面板的较低部分进行设置。
- Save expected JSON: 指定是否保存预期 JSON 。
- Allow alteration: 指定是否允许更改提取。当选择此选项时,将在 Selected Element 列表下显示 Extract 选项卡和 Alter 选项卡。若要改变提取请选择 Allow alteration 多选框,选择 Alter 选项卡,通过单击 Extract Element 按钮添加提取,然后通过单击 Modify 按钮修改提取。 Modify 对话框将显示并包含以下选项:
XPath: 显示所选定的 XPath。有关更多详情,请查阅 JSON 选择器参考 。
- Alteration Type: 允许指定输入的 Value 如何更改 JOSN。选择 Append 将添加更改的值到提取物末尾。选择 Append 将添加更改的值到提取物起始端。选择 Replace With 将把整个提取物替换为指定的更改值。
- Alteration Value: 允许使用数据源指定固定值或者参数化值。
- Extract empty elements as: 指定是否提取空元素。启用此选项后,可以使用相邻的文本字段来指定一个文本字符串,此字符串指示应该为每个空的提取元素添加什么样的“占位符”值。
- 当提取的元素为空字符串时,应用此选项。例如,JSON { "name" : "" } 有一个 "name” 的空字符串。
- 注意,如果使用此选项则要求额外的配置;请查阅 Handling Empty/Missing Elements to Maintain the Integrity of the JSON Response
- Extract missing elements as: 指定是否提取缺失的元素。启用此选项后,可以使用相邻的文本字段来指定一个文本字符串,此字符串指示应该为每个缺失的提取元素添加什么样的“占位符”值。
- 此选项在提取物没有定位到任何匹配的节点时应用。
- 注意,如果使用此选项则要求额外的配置;请查阅 Handling Empty/Missing Elements to Maintain the Integrity of the JSON Response
查看测试执行期间使用的数据库变量
可以配置控制台视图(Window> Show View> Console),显示测试执行期间使用的数据库变量。关于更多详情信息,请查阅 Monitoring Variable Usage。
处理空的/缺失的元素以维护 JSON 响应的完整性
默认情况下,将不会提取空的和缺失的元素。这可能会影响可写数据源中使用的 JSON 响应的完整性。
例如,假设你有以下 JSON:
{
"e":
5,
"e":
"",
"e":
6
}
还假设你希望为所有 'e'
元素创建提取物。为此,选择第一个元素,然后单击 Extract Element。
接下来,选择新的提取物,然后单击 Modify。
在 Modify 对话框汇总,更改 Xpath 以从 /root/e[1]/text()
提取到 /root/e/text()
.这将提取所有三个文本节点。
这将提取所有三个文本节点。
接下来,单击 Data source column 并选择可写数据源列。在执行数据库时,可写数据源将只包含两行,因为第二个元素缺少文本:
ROW 1 = 5
ROW 2 = 6
如果希望编写空值,则将 Xpath 从 /root/e/text()
更改为 /root/e
,并确保启用了 Content Only 。
通过这种方式,就可以提取所有三个元素,包括它们的内容。可以选择性地启用 Extract empty element 作为更改为空值提取的值的选项。现在,数据库将附加空值到可写数据源:
ROW 1 = 5
ROW 2 =
ROW 3 = 6