若要向 SOAP 客户端和 REST 客户端工具快速添加差异比较,可以直接在 CTP 界面创建比较工具。比较工具将编辑器中的数据与指定的回归控件进行比较,并在发现差异时报告失败。比较工具可用于 JSON、XML、文本或二进制文件。

CTP 中添加的任何比较工具都将附加到所选测试的响应上。 

此外,您可以使用 SOAtest 桌面端对添加到响应通讯报文的比较工具进行编辑。使用 SOAtest 桌面端添加到请求通讯报文的任何比较工具在 CTP 都将不可见。二进制比较工具可以在 CTP 中编辑,但不能添加。

比较工具 vs. 断言器工具

如果要检查消息的所有部分或大部分是否与回归控制匹配,则使用比较工具。如果要检查消息的特定元素,并且/或者想验证除匹配之外的其他内容,则使用断言器工具。

添加比较工具

添加新的比较工具:

  1. 在左窗格中,选择希望比较其响应的 REST 客户端或 SOAP 客户端。
  2. 选择页面级操作菜单中合适的添加比较工具命令。

    注意,JSON 比较工具可用于 REST 客户端,但不适用于 SOAP 客户端。 
  3. (可选)修改新建工具的名称。 
  4. 按照下面的描述配置工具。
  5. 保存新工具的配置。

新工具将作为输出“链接”到所选测试客户端工具的响应。头部比较工具链接到响应头。所有其他比较工具链接到响应体消息。

配置比较工具

若要配置比较工具:

  1. 在回归控制区域中,指定“控制”值(与之比较所有后续结果的值)。根据所选的比较类型,您可以访问字面文本编辑器、JSON 编辑器和/或 XML 编辑器(更多详情和提示,请参阅编辑 JSON 消息编辑 XML 消息)。



    根据最近的通讯报文更新回归控制

    如果 CTP 可以访问与当前回归控件不同的新通讯报文,则可以点击更新回归控制按钮以将新通讯报文复制到回归控制中。

  2. (只适用于 XML 或 文本/头部比较)在选项区域中,根据需要修改其他配置选项。详情请参阅 XML 比较选项文本比较 / 头部比较选项。 
  3. (可选)在“忽略区别”中,指定您想要允许的任何差异(即,您不希望作为错误进行报告的差异)。根据比较工具的类型,可以使用 Xpath 构造器(如指定 XPath 中所述)和/或表来指定忽略的差异。使用表格时:
    • 修改允许接受指定属性的不同值。
    • 插入允许接受一个新的/附加属性(您需要将其添加到表中)。
    • 删除允许接受指定属性的缺失。 
    • 点击表行内以在允许不允许之间进行切换。

       


XML 比较选项

选项说明
比较引擎指定使用的比较引擎。默认为 XMLUnit;它支持大量的消息、生成大量差异的比较,以及忽略元素顺序变化的能力。在旧版本的 SOAtest 工具中创建的比较工具可以配置为使用 VMTools 或 ExamXML MDCXML。
忽略元素顺序配置该工具以忽略每个处理过的文档的所有区域中的元素顺序。注意,如果更希望忽略文档特定部分的顺序,那么在将文档传递给比较工具之前,请使用 SOAtest XML 排序工具对该部分进行排序。 
SOAP 模式如果选择了该选项: 
  • SOAP 多引用在进行差异比较之前解析,不会作为错误进行报告。例如,某些服务在使用 SOAP 多引用(如,为引用提供不同的 id 号)时以不可预知的方式重新排列 XML 响应。当这些响应在文本模式中不同时,即使 SOAP 消息在逻辑上等效,但由于它们的引用不同,也会发生失败。
  • type 和 arrayType 属性中命名空间的前缀变更会被忽略。这对于自动从 WSDL 中生成控制而言是必要的,因为前缀不能提前确定 
  • 数值会用数字来比较。例如,1 和 1.0 之间的差异不会作为错误进行报告。


 

文本比较 / 头部比较选项



正则表达式

确定是否将预期值被解析为正则表达式。如果未选择该框,则控制值将不会被解析为正则表达式。如果选择了该框,则控制值将被解析为正则表达式。

例如,可以输入以下正则表达式:

Java[a-zA-Z ]+\Q(\E[4-9]+th Edition\Q)\E

实际提取的字符串可能如下:如何使用 Java 编程(第四版)

正则表达式将解析上面的字符串,检查“Java”是否作为第一个子字符串出现,后面紧跟一个或多个匹配项(在开括号和闭括号后面用 + 运算符表示),而匹配项仅限于 a-z 和 A-Z 以及空格之间的字母。注意,通过添加 \Q 和 \E 来进行转义。之所以需要这样做,是因为开括号和闭括号可以是正则表达式的一部分,因此如果它们表示为子字符串,则需要转义。我们还有一个数字出现在第一个开括号后面,它由 [4-9]+ 表示。这就规定了至少出现一个 4 至 9 之间的数字,该数字后跟 "th Edition"。最后,使用 \Q\E 转义闭括号。

忽略空格

确定是否忽略输入行和比较控件行中开始和结尾出现的空白行和空白字符。如果未选择该框,空白行和前导/后置空白将造成回归测试失败。如果选择了该框,将忽略空白行和前导/后置的空白字符。

下列任何一种都表示为空白字符表:水平制表、换行、换页、回车、空格。空白行是包含一个或多个空白字符的行。

  • No labels