本主题涵盖了 SOAtest 和 Virtualize 中的 XML 断言器工具。该工具强制 XML 消息中数据的正确性。 
本章包含:

了解 XML 断言器

该工具通常连接到 SOAP 客户机或消息传递客户机,以便验证服务返回的数据。XML 断言器提供了对复杂消息验证需求的支持,而不需要脚本,并且允许你轻松地在 XML 消息上创建和维护验证断言。

在验证来自服务的结果时,你可能希望应用符合业务需求的特定规则。可能不足以验证是否发生了更改;您可能还想定义复杂的规则,定义可接受的 XML 消息的组成。

XML 断言器目的在于提供一系列断言,这些断言可以为消息有效性实施更符合逻辑和业务的规则。

这个工具通常是从 XML 消息的 Create/Update Regression Control 对话框中添加的(通过选择 Create Value Assertion 选项)。有关以这种形式添加 XML 断言器的更多详情,请查阅 对单个响应元素的值进行验证。 
 




它还可通过 Add Output 向导添加,如 添加测试输出中所述。

 

配置 XML 断言器

XML 断言器由三个主要选项卡组成:

  • Summary: 此选项卡包含一个表,显示已配置的 XML 断言的详细信息。
  • Configuration: 此选项卡用于创建和配置 XML 断言。
  • Expected XML: 指定预期的 XML 响应,创建可以从中选择元素的模板。如果此工具接收一个有效的 XML 消息(比如,该消息来自流量或者在附加的客户机工具中定义),则此面板将自动被填充。作为一种选择,可以将示例消息复制到 Literal 或 Tree 选项卡中。注意,默认情况下不会保存预期 XML;如果要对它进行保存,请启用 Save Expected XML 选项。

若要配置 XML 断言器: 

  1. 单击 XML 断言器配置选项卡中的 Add 按钮。



     将显示 Select Assertion 向导。



  2. 选择一个断言类型。下面是对可用断言类型的简要总结。
    • Value Assertions: 可以使用以下值断言:
      • Value Assertion: 强制执行特定元素的值。
      • Value Occurrence Assertion: 强制具有给定值的元素出现一定数量(例如,Xpath 选择器和所指定值字符串上的文档必须 n 个匹配项)。
      • Numeric Assertion: 强制元素的数值。
      • String Comparison Assertion: 执行给定元素的文本内容的值。
      • Regular Expression Assertion: 强制元素匹配正则表达式。
      • Expression Assertion: 执行由元素组成的表达式的值。
      • Custom Assertion: 通过编写自定义逻辑脚本来强制执行元素的值。
    • Structure Assertions: 可以使用以下结构断言:
      • Occurrence Assertion: 强制元素出现的次数。
      • Has Content Assertion: 强制元素具有文本内容(即,文本长度> 0)。
      • Has Children Assertion: 强制一个元素有一个或多个子元素。
    • Compound Assertions: 可以使用以下组合断言:
      • AND Assertion: 将所有必须成功的多个断言分组。
      • OR Assertion: 在至少一个断言必须成功的地方对多个断言进行分组。
      • Conditional Assertion: 只有在满足条件时才强制执行断言(条件是以前定义的断言的组合)。
    • Difference Assertions: 可以使用以下差异断言:
      • Numeric Difference Assertion: 对特定元素的值强制执行数值差异。断言元素的数值与用户指定的基值之间存在用户指定值的差异。例如,为了断言华氏度的值低于冰点 3 度,可以将基本值设置为 32,差值设置为 -3。
      • Date Difference Assertion: 对特定元素的值强制执行日期差异。
      • DateTime Difference Assertion: 对特定元素的值强制执行日期时间差异。
    • Range Assertions: 可以使用以下差异断言:
      • Numeric Range Assertion: 强制元素的数值位于数值范围的包含范围内。
      • Date Range Assertion: 对特定元素的值强制使用日期范围
      • DateTime Range Assertion: 对特定元素的值强制设置日期时间范围
  3. 单击 下一步 按钮。将显示一个树视图。



  4. 选择要检查此断言的元素,然后单击 Finish 按钮。注意,你可以在 XML 断言器工具的 Expected XML 选项卡中编辑此树的结构。

你可以通过单击 Configuration 选项卡中的 Add 按钮,添加附加的断言来应用于消息(例如要对 price 元素强制执行的数字断言)。

如果稍后想修改断言引用的元素,请单击 Configuration 右下角的 Change Element 。这将打开一个对话框,允许你图形化或手动编辑给定的元素。你可以单击 Evaluate Xpath 按钮,查看对预期 XML 应用 Xpath 表达式的结果。

 

 注意,在将提取的字符串与预期文本进行比较之前, Trim content 选项将删除提取字符串的开始和结束部分的任何空格。例如,如果提取了“bar”(忽略所有示例中的引号;它们被用来显示空格),它会变成“bar”;如果没有启用 Trim content 选项,这将匹配“bar”(并且无法匹配“bar”)。

如果你有如下 XML

<foo>
bar
</foo>

如果“bar”值前后的新行字符无趣,而且主要是格式化问题,那么你可能希望启用此选项,这样在创建提取时就不必考虑 XML 的格式。

参数化 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 响应中为值添加目标断言。

相关教程

以下教程演示如何使用此工具:

  • No labels