本主题解释如何配置和应用 XML 转换器工具,该工具提供类似 XSLT 的功能来转换任何 XML。
本章包含:


了解 XML 转换器

SOAP 消息通常包含一个大的 XML 有效负载。您可能只对该负载的一小部分感兴趣,并且希望仅使用响应或请求的几个元素来创建回归控制。一次忽略所有这些元素会变得非常乏味。在这种情况下,使用 XML 转换器工具会更有效。

XML 转换器提供了类似 XSLT 的功能来转换任何 XML。如果您希望仅使用 SOAP 响应或请求的几个元素来创建回归控件,那么这是非常有用的。

配置 XML 转换器

若要配置 XML 断言器,请完成以下操作:

  1. 选择主测试套件节点,并单击 Add test or output 按钮。
  2. 从添加测试向导中选择 Standard Test> XML Transformer ,然后单击 Finish 按钮。将在测试套件中显示 XML Transformer 节点。
  3. 双击 XML Transformer 节点。

您可以配置以下选项:

    • Name指定转换器工具名。
    • Tree/Literal/Element: 指定预期的 XML 响应。可以使用 Literal 选项卡、 Tree 选项卡和 Element 选项卡以文字、树或简单元素的形式查看预期的 XML。
    • Selected Element:指定要添加的元素作为参数化值。
    • Extract Element:若要添加一个元素,请从 Selected Element 列表中选择一个值,然后单击 Extract Element 按钮。添加的值将显示在 Selected Element 列表,该列表带有与所选工具对应的数据源列名和值名。
    • Remove若要删除一个 XPath,请从 Selected Element 列表中选择一个值,然后单击 Remove按钮。
    • Modify若要修改一个 XPath,请从 Selected Element 列表中选择一个值,然后单击 Modify按钮。Modify 对话框将显示并包含以下选项:
      • XPath: 显示所选定的 XPath。如果正在寻找更通用的 XPath,则可以很容易地在列表索引中键入不同的数字。例如,如果只对第二次出现感兴趣,则可以将 [1] 更改为 [2] 。编辑 XPath 文本之后,单击 Validate 按钮来验证 Xpath 格式,然后单击 OK
      • Options允许提取整个元素,或者只提取内容。
        • Entire Element: 选择 Entire Element 将输出完整的 XPath。例如, XPath/Parent 将输出 <parent>VALUE</parent>。您可以配置以下 Entire Element Options
        • Index to extract: 默认值为 1。在元素出现多次的情况下,此控件控制提取哪个元素。
        • Content Only: 选择 Content Only 将值输出值。例如, XPath/Parent 将输出 VALUE。您可以配置 Text Content: 提取所选元素的文本内容,或 All Child Nodes: 提取所选定元素的所有子节点。
      • XPath Evaluation: 单击 Evaluate 按钮显示对预期 XML 应用 Xpath 表达式的结果。
    • Save Expected XML指定是否保存预期 XML。
    • Canonicalize XML Output: 指定提取的元素是否规范化。如果选中此选项,或者如果提取了整个元素,则如果提取的元素包含引用未在同一元素中声明的命名空间的前缀,将向该元素添加任何必要的命名空间声明。
    • Allow Alteration指定是否允许更改 XPath。当选择此选项时,将在 Selected Element 列表下显示 Extract 选项卡和 Alter 选项卡。若要更改 XPath,请选择 Allow Alteration 多选框,选择 Alter 选项卡,通过单击 Add 按钮添加 XPath,然后通过单击 Modify 按钮修改 XPath。Modify 对话框将显示并包含以下选项:
      • XPath: 显示所选定的 XPath。若要编辑和验证一个所选定的 Xpath,请编辑 Xpath 文本,单击 Validate 按钮来验证 Xpath 格式,然后单击 OK
      • Alteration Type允许指定输入的 Value 如何更改 XML。
      • 选择 Append 将添加更改的值到 XPath 末尾。
      • 选择 Prepend 将添加更改的值到 XPath 起始端。
      • 选择 Replace With 将把整个 XPath 替换为指定的更改值。
      • 变更值:允许输入要更改 XPath 的值。
    • Extract Empty Elements As指定是否提取空的 XML 元素。启用此选项后,可以使用相邻的文本字段来指定一个文本字符串,此字符串指示应该为每个空的提取元素添加什么样的“占位符”值。注意,如果使用此选项,则需要额外的配置;请查阅 Handling Empty Elements to Maintain the Integrity of the XML Response
    • Wrap Output in XML指定 XML 转换器工具的输出是否为格式良好的 XML。

      如果选择此选项,内容将输出为格式良好的 XML。例如,XML 编码的值为:

      &lt;foo

      将输出为: 

      <root> <ElementName>&lt;foo&gt;</ElementName> </root>


添加回归控制

可以使用提取或修改的 XPath 值添加回归控件。右键单击包含 XML 转换器的 SOAP 客户机节点,并从快捷菜单中选择 Create Regression Control 。  将在 XML 转换器选项卡下出现一个 Transformed XML> Diff 节点。如果选择此节点,您将在 XML 转换器工具中看到添加到 Selected Xpaths 列表。

参数化 XPaths

可以参数化 Xpaths 来引用 测试 变量、环境变量和数据源值。  引用变量的语法为 ${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 响应的完整性。例如,

<e>5</e>
<e/>
<e>6</e>
会生成一个看起来像下面这样的可写数据源


ROW 1 = 5
ROW 2 = 6
如果您喜欢在提取中表示所有节点(包括空元素):
  1. 启用 Extract empty elements as
  2. (可选)如果希望为每个提取的空元素添加一个“占位符”值,请在相邻的文本字段中指定所需的占位符字符串。


     
  3. 选择指定要提取什么的 XPaths 之一,然后单击 Modify
  4. 确保 Extract 选项设置为 Content only
  5. 删除相关 XPath(s) 末端的 /text() 。例如,如果当前 XPath 为 

    /*[local-name(.)="Envelope" and namespace-uri(.)="http://schemas.xmlsoap.org/soap/envelope/"]/.../*[local-name(.)="i" and namespace-uri(.)=""][1]/text()

    则将其编辑为

    /*[local-name(.)="Envelope" and namespace-uri(.)="http://schemas.xmlsoap.org/soap/envelope/"]/.../*[local-name(.)="i" and namespace-uri(.)=""][1]




  6. 根据需要,对其他 XPaths 重复步骤 3-5。
  • No labels