本主题解释如何配置和应用 XML 转换器工具,该工具提供类似 XSLT 的功能来转换任何 XML。
本章包含:
了解 XML 转换器
SOAP 消息通常包含一个大的 XML 有效负载。您可能只对该负载的一小部分感兴趣,并且希望仅使用响应或请求的几个元素来创建回归控制。一次忽略所有这些元素会变得非常乏味。在这种情况下,使用 XML 转换器工具会更有效。
XML 转换器提供了类似 XSLT 的功能来转换任何 XML。如果您希望仅使用 SOAP 响应或请求的几个元素来创建回归控件,那么这是非常有用的。
配置 XML 转换器
若要配置 XML 断言器,请完成以下操作:
- 选择主测试套件节点,并单击 Add test or output 按钮。
- 从添加测试向导中选择 Standard Test> XML Transformer ,然后单击 Finish 按钮。将在测试套件中显示 XML Transformer 节点。
- 双击 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: 提取所选定元素的所有子节点。
- Entire Element: 选择 Entire Element 将输出完整的 XPath。例如,
- XPath Evaluation: 单击 Evaluate 按钮显示对预期 XML 应用 Xpath 表达式的结果。
- XPath: 显示所选定的 XPath。如果正在寻找更通用的 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 编码的值为:
<foo
将输出为:
<root> <ElementName><foo></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
- 启用 Extract empty elements as。
- (可选)如果希望为每个提取的空元素添加一个“占位符”值,请在相邻的文本字段中指定所需的占位符字符串。
- 选择指定要提取什么的 XPaths 之一,然后单击 Modify。
- 确保 Extract 选项设置为 Content only。
删除相关 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]
- 根据需要,对其他 XPaths 重复步骤 3-5。