本主题介绍如何在 SOAtest 和 Virtualize 中配置并应用 XML 数据库。此工具提取 XML 值(比如,从请求或响应消息中),以便在其他地方使用。数据还可以发送到可写数据源并在扩展工具中访问,或者可以发送到变量,以便在测试套件(针对 SOAtest)或响应器套件或操作套件(针对 Virtualize)之间方便地重用。

章节目录:

了解 XML 数据库

XML 数据库工具允许提取某些 XML 值(比如,从请求或响应消息中),以便在其他地方使用。XML 数据库工具可以链接到任何其他输出 XML 的工具。它可以提取 XML 中的任何信息,并使这些信息可供以后使用。




比如,可以从传入请求中提取一个值,并使用它填充在接收请求时要发送的响应元素。使用向导从通讯报文创建虚拟资产时,可以手动配置 XML 数据库。此外,可以使用“使用数据源向导”来提取值并使用它作为响应中的参数化值。对于消息响应器,可以从传入请求(主体或头部)中提取值;对于其他工具(比如操作套件中使用的工具),可以从套件中的其他工具提取值。另一个选项则是手动添加一个提取所需数据的 XML 数据库工具(作为到现有工具的输出),然后配置其他工具来使用提取到的值。

使用数据源向导配置 XML 数据库

配置提取物

若要使用“使用数据源向导”来配置一个 XML 数据库:

  1. (不适用于消息响应器) 确保有一个包含至少两个工具的操作集或测试套件。

  2. 在要使用提取值的工具的配置面板中,选择一个可用的表单视图。
  3. 操作下拉菜单中,选择要使用提取值的操作。
  4. 在元素视图(比如,id 值),转到要使用提取值的消息元素,然后从可用下拉菜单中选择参数化使用数据源向导



  5. 在打开的向导中:
    1. 选择要从其提取值的工具(适用于操作套件工具)。面板顶部的下拉菜单将包含正在配置的当前工具之前发生的测试或响应器套件中的所有工具。例如,如果正在配置工具 4,则工具 1,2 和 3 将在此菜单中显示,以及任何可用的数据源。

    2. 对于消息响应器,选择要从中提取值的传入请求消息,然后指定是否要从消息主体或消息头中提取值。

    3. 使用面板左侧的控件,指示要提取的内容并将其添加到面板右侧。右侧面板列出了为提取内容配置的值,并显示了将存储这些值的数据源列的名称(如果保留默认设置)。
    4. (可选项)如需指定其他选项(例如,更改用来存储值的列名,将值保存到可写数据源中,或者将值存储到现有变量中),或者,如需修改高级 Xpath 设置,则选择右侧表中相应元素并点击修改。接下来,根据需求配置选项,然后点击 OK。可用选项如 Options for Each Extracted Element中所述。

手动配置 XML 数据库

也可以手动将 XML 数据库工具链接到响应器、操作或测试套件内的工具。若要配置 XML 数据库作为链接工具,请完成以下内容:

  1. (不适用于消息响应器) 确保有一个包含至少两个工具的操作集或测试套件。

  2. 右键点击与要提取的数据相关联的工具节点(比如,如果要从传入请求或传出响应中提取值,则选择处理这些消息的消息响应器),然后选择添加输出

  3. 添加输出向导中,指示要从哪里提取值(比如,SOAP Envelope、传入请求、传输头、传入附件、传出响应等。),然后点击完成按钮。将在工具下方显示 XML 数据库节点。

  4. 配置工具,如下所示:
    1. 使用可用控件指定表示要提取什么值的 XPath。若要添加一个 XPath,请从预期消息列表中选择一个值,然后点击提取元素按钮。添加的值将显示在所选元素列表,该列表有一个列名为数据源,其中包含值所来自的工具的名称和提取到的值。 

      默认情况下,XPath 字段区分大小写,但可以通过在启动 Virtualize 时指定适用的系统属性来更改大小写敏感设置。详情请参阅区分大小写


      使用预期消息

      左侧面板显示了用于创建模板的预期 XML 响应,您可以从中选择元素。如果此工具接收一个有效的 XML 消息(比如,该消息来自通讯报文或者由附加的客户端工具所定义),则此面板将自动被填充。或者,可以将示例消息复制到纯文本或树状选项卡中。注意,默认情况下不会保存预期 XML;如果要对它进行保存,请启用保存预期的 XML 选项。
    2. 如果希望进一步配置 Xpath 或自定义钙元素的提取设置,则点击修改,然后根据需求修改。详情请参阅Options for Each Extracted Element

    3. 根据需求重复步骤 a 和 b,以配置要执行的任何其他提取物。
    4. 在 XML 数据库配置面板底部区域,根据需求自定义选项。详情请参阅Tool-Wide Extraction Options

使用提取值

添加和/或修改提取物之后,配置要使用提取值的工具。

将值设置为“参数化”,并从下拉菜单中选择合适项。例如,如将值保存到“title” 数据源列,则将按如下方式选择它。



配置选项

可以在配置 XML 数据库时配置以下选项:

每个提取元素的选项

以下选项可以通过修改 XML 数据库配置面板右侧面板中列出的选择项进行设置。

XPath 选项

  • XPath:显示表示要提取的值的 XPath。如果正在寻找更通用的 XPath,则可以很容易地在列表索引中键入不同的数字。例如,如果只对第二次出现感兴趣,则可以将 [1] 更改为 [2]。编辑 XPath 文本之后,点击验证按钮来验证 Xpath 格式,然后点击 OK
  • 提取:允许精确地指定提取的内容。
    • 整个元素:选择整个元素将输出完整的 XPath。例如,XPath/Parent 将输出 <parent>VALUE</parent>。可以配置索引来进行提取,如果元素出现多次,则由哪个控件控制提取哪个元素。
    • 仅内容:选择仅内容将值输出值。例如,XPath/Parent 将输出 VALUE。可以配置文本内容,提取所选元素的文本内容,或者配置全部子节点,提取所选定元素的所有子节点。
  • Xpath 评估:点击评估 Xpath 按钮显示对预期 XML 应用 Xpath 表达式的结果。

数据源列选项

  • 自定义列名:指定存储值的数据源列名。除非指定了其他位置(比如,如果选择可写数据源列变量),否则值存储在内部数据源中。这是您将在其他地方引用该值时使用的名称。例如,如果该值存储在名为 My Value 的数据源列中,则应选择 My Value 作为参数化值。也可以引用其作为字面量视图或多响应视图中的 ${My Value}




  • 可写数据源列:将值存储到可写数据源列中 。这样就可以在单列中存储一系列值。然后,其他工具即可遍历存储的值。

  • 写入所有匹配的列:将值保存到所有名称中包含给定字符串的列中。从消息中提取多个值时,这些值将被写入匹配的所有列中的一行,每个值放入不同的列中。如果提取的值多于匹配列的数量,由于匹配列的数量少于值的数量,有些值将不会被写入。相反,如果选择一个可写数据源列(上面的选项),那么值将跨多行写入列。

  • 变量:启用此选项,将值保存在特定值中,以便它可以在当前响应器、操作或测试套件中重复使用。变量必须已经被添加到当前套件中,如 在 Virtualize 中定义变量。 以这种方式设置的任何值都将覆盖响应器、操作或测试套件属性面板中指定的任何局部变量值。

对于头部,可以配置头名称和上述列出的数据源列选项。

Tool-Wide 提取物选项

以下选项可以在 XML 数据库工具配置面板的较低部分进行设置。

  • 保存预期的 XML:指定是否保存预期 XML。
  • 规范化转换 XML 输出:指定提取的元素是否规范化。如果选中此选项,或者如果提取了整个元素,则如果提取的元素包含引用未在同一元素中声明的命名空间的前缀,将向该元素添加任何必要的命名空间声明。
  • 允许修改:指定是否允许更改 XPath。当选择此选项时,将在所选元素列表下显示提取选项卡和修改选项卡。若要更改 XPath,请选择允许修改复选框,选择修改选项卡,通过点击提取元素按钮添加 XPath,然后通过点击修改按钮修改 XPath。修改对话框将显示并包含以下选项:
    • XPath:显示所选定的 XPath。若要编辑和验证一个所选定的 Xpath,请编辑 Xpath 文本,点击评估 Xpath 按钮来验证 Xpath 格式,然后点击 OK
    • 变更类型:允许指定输入的如何更改提取物。选择附加将添加更改的值到提取物末尾。选择附加将添加更改的值到提取物起始端。选择替换为将把整个提取物替换为指定的更改值。
    • 变更值:允许使用数据源指定固定值或者参数化值。
  • 提取空元素为:指定是否提取空的 XML 元素。启用此选项后,可以使用相邻的文本字段来指定一个文本字符串,此字符串指示应该为每个空的提取元素添加什么样的“占位符”值。
    • 此选项在 Xpath 定位节点,但该节点没有文本内容时应用。例如,如果有一个 <parent><child/></parent>,在 XPath //*[local-name()="child"]/text() 上发现子元素,但却没有文本内容。
    • 注意,如果使用此选项则要求额外的配置;请参阅处理空的/缺失的元素以维护 XML 响应的完整性
  • 提取缺失元素为:指定是否提取缺失的 XML 元素。启用此选项后,可以使用相邻的文本字段来指定一个文本字符串,此字符串指示应该为每个空的提取元素添加什么样的“占位符”值。
    • 此选项在 Xpath 没有定位到任何匹配的节点时应用。例如,如果给定的简单 xml 文档如下所示:<parent><child>name</child></parent>,在 XPath //*[local-name()="sibling"] 发现 0 个节点。
    • 注意,如果使用此选项则要求额外的配置;请参阅处理空的/缺失的元素以维护 XML 响应的完整性

参数化 XPath

可以参数化 Xpath 以引用响应器套件或测试变量、环境变量和数据源值。引用变量的语法为 ${myVariableName}。引用 XML 数据库值和数据源值的语法为:${myColumnName}.

例如,如果 ${XPath Key} 是数据源列名,则可以使用

/*[local-name(.)="bookstore" and namespace-uri(.)=""]/*[local-name(.)="book"

namespace-uri(.)=""][child::node()[local-name(.)="title" and text()="${XPath Key}"]]

处理空的/缺失的元素以维护 XML 响应的完整性

默认情况下,将不会提取空的和缺失的元素。  这可能会影响可写数据源中使用的 XML 响应的完整性。

例如,假设您有以下 XML:

<?xml version="1.0" encoding="UTF-8"?>
<root>
	<e>5</e>
	<e/>
	<e>6</e>
</root>

还假设您希望为所有‘e’元素创建提取物。  为此,选择第一个元素,然后点击提取元素



接下来,选择新的提取物,然后点击修改。  

在修改对话框汇总,更改 Xpath 以从 /root/e[1]/text() 提取到 /root/e/text().



这将提取所有三个文本节点。

接下来,点击数据源列并选择可写数据源列。在执行数据库时,可写数据源将只包含两行,因为第二个元素缺少文本:

ROW 1 = 5
ROW 2 = 6

如果希望编写空值,则将 Xpath 从 /root/e/text() 更改为 /root/e,并确保启用了仅内容



通过这种方式,就可以提取所有三个元素,包括它们的内容。可以选择性启用提取空元素为选项,将提取值更改为空值。现在,数据库将附加空值到可写数据源:

ROW 1 = 5
ROW 2 =
ROW 3 = 6

  • No labels