SoapUI 断言

2025年3月17日 | 阅读 7 分钟

什么是断言?

断言是应用于声明验证结果的验证规则,用于检查目标 Web 服务是否与预期结果以相同方式工作。断言可以通过使用检查点或验证点来理解,应用于每个验证参数。例如,当我们向 Web 服务器发送请求时,Web 服务器接收请求并生成响应。现在,我们必须使用包含与我们预期相同结果的断言规则来验证服务器响应结果。因此,我们使用断言来验证响应。

断言的特点

  • 断言包含验证规则,这些规则在执行测试步骤期间验证服务器收到的响应。
  • 在断言中,我们可以定义响应消息的特定部分或整个消息,应该进行验证。
  • 我们可以指定任意数量的断言验证规则,这些规则从结果的不同方面验证测试步骤。
  • 如果任何测试步骤不符合收到的响应结果,则断言测试结果将导致测试步骤失败。它在测试执行日志中以红色显示。

断言的类型

以下是 SoapUI 工具中使用的断言类型列表。

  1. 属性内容
  2. 合规状态标准
  3. 脚本
  4. SLA
  5. JMS
  6. 安全性

属性内容

它用于检查在触发特定服务请求后收到的响应中存在的属性。

  • 包含断言:它用于验证指定字符串是否存在于响应 xml 中。此外,我们可以定义正则表达式来检查表达式的存在。
  • 不包含断言:它用于验证指定字符串在响应 xml 中不存在。此外,我们可以在“不包含”中定义正则表达式来检查表达式的存在。
  • XPath 匹配断言:XPath 匹配用于从目标属性中选择特定内容,并将 XPath 表达式的结果与响应 xml 中的预期值进行匹配。
  • XQuery 匹配:XQuery 表达式类似于 XPath 匹配,用于从目标源中选择内容,并将 XQuery 表达式结果与响应 XML 中的预期值进行比较或匹配。
  • 脚本断言:脚本断言允许用户运行自定义脚本以执行用户定义的验证。

合规性、状态和标准

它用于检查响应 XML 中故障消息和模式合规性的状态。

  • HTTP 下载所有资源:它用于验证所有 html 文档,如图像、脚本等,这些文档在下载资源后可用。
  • 无效 HTTP 状态码:无效 HTTP 状态码用于验证目标测试步骤是否收到了 HTTP 代码不在定义的 HTTP 代码列表中的结果。
  • 非 Soap 故障:顾名思义,非 Soap 故障用于确定最后收到的消息中不存在 Soap 故障。
  • Soap 响应:它用于验证最后收到的消息是否为 Soap 响应消息,并且只能应用于任何 Soap 请求的TestSteps
  • Soap 故障:它用于查找最后收到的消息中是否存在任何 Soap 故障。它仅适用于 Soap Test Steps 和 MockResponse Test Steps。
  • WS-Security:它用于检查最后收到的消息是否具有有效的 WS-Security 标头。Mock 响应 Test Steps 仅支持它。
  • 模式合规性:模式合规性用于检查最后收到的 XML 消息是否遵循 WSDL 或 WADL 合规性定义。SOAP 和 REST Test Steps 都使用模式合规性。
  • WS-Addressing 请求:它用于验证最后提交的请求是否具有正确的 WS 寻址标头。Mock 响应 Test Steps 仅支持它。
  • WS-Addressing 响应:它用于验证最后收到的响应 XML 消息是否具有正确的 WS 地址标头。Soap Request Test Steps 仅支持它。

脚本

  • 脚本断言:脚本断言用于创建自定义脚本,在响应 XML 文件中执行用户定义的验证规则。

安全性

  • 敏感信息泄露:它用于验证收到的 XML 响应消息不会向目标系统泄露敏感信息。

SLA

  • 响应 SLA:响应 SLA 用于验证最后收到的消息的响应时间是否在指定时间限制内。此外,SLA 可以通过脚本测试实现,脚本测试将脚本请求发送到服务器并接收响应。

JMS

  • JMS 状态:它用于检查测试阶段的 JMS 请求是否已成功执行,并且它适用于具有 JMS 端点的测试步骤。它用于处理具有 JMS 端点的测试步骤请求。
  • JMS 超时:JMS 超时用于验证 JMS 指定测试步骤的描述不会花费比指定时间更长的时间。

JDBC

  • JDBC 状态:JDBC 状态用于验证指定测试步骤的请求是否在 SoapUI 测试工具中成功执行。它只能应用于 JDBC TestSteps。
  • JDBC 超时:JDBC 超时用于验证指定测试步骤的 JDBC 语句不会花费比指定时间限制更长的时间。

包含断言

它用于搜索响应 XML 文件中存在的指定字符串。此外,它还使用正则表达式来检查字符串或文本。

以下是创建包含断言的步骤

步骤 1:最初,“断言”选项卡中没有断言。因此,单击 (+) 图标以添加新的断言,如下图所示。

SoapUI Assertions

我们还可以在断言选项卡中检查添加的断言数量。

步骤 2:从“添加断言类别”中选择适当的断言,例如属性内容,然后选择属性内容的类型,例如包含,如下图所示。

SoapUI Assertions

步骤 3:单击添加按钮后,将显示包含断言的弹出对话框。

SoapUI Assertions

指定我们想要与现有 Web 响应匹配的字符串或值。

步骤 4:单击确定按钮后,控制权将转移到求和请求窗口,如下图所示。

SoapUI Assertions

在上图中,包含有效的,因为求和请求的响应与包含字符串匹配。如果包含无效,则会显示错误消息。

不包含断言

它用于搜索 Web 响应 XML 文件中指定字符串或文本的不存在性。以下是创建不包含断言的步骤

步骤 1:为了验证不包含断言,单击 (+) 图标以添加新的断言。

步骤 2:选择属性内容,然后单击不包含断言,如下图所示。

SoapUI Assertions

步骤 3:单击添加按钮后,将显示不包含断言的弹出对话框。

SoapUI Assertions

步骤 4:指定 Web 响应 XML 文件或“求和请求”中不存在的内容或字符串,然后单击确定按钮以检查验证,如下图所示。

SoapUI Assertions

它验证定义的语句 Integer A 是否存在。如果语句存在,则显示错误消息;如果定义的字符串在当前内容中不存在,则不包含的条件是有效的,如上图所示。

XPath 匹配断言

XPath 匹配用于从目标属性中选择特定内容,并将 XPath 表达式的结果与响应 xml 中的预期值进行匹配。

以下是验证 XPath 匹配断言的步骤

步骤 1:为了验证XPath 匹配断言,单击 (+) 图标以添加新的断言。

步骤 2:选择属性内容,然后单击XPath 匹配断言,如下图所示。

SoapUI Assertions

步骤 3:单击添加按钮后,将显示 XPATH 窗口的配置。

SoapUI Assertions

步骤 4:要在 XPath 匹配配置中声明 XML 命名空间,请单击声明按钮,该按钮将在 XPath 中填充两个 XML 命名空间,如下图所示。

SoapUI Assertions

这是 XPath 匹配中使用的命名空间的声明

步骤 5:填充 XML 命名空间后,输入 XPath 节点为 //ns1:AddResult,它用于搜索和验证 <AddResult> 和 </AddResult> 之间的值。

SoapUI Assertions

步骤 6:在 XPath 表达式中添加 //ns1:AddResult 后,现在单击从内容中选择,该按钮将从当前响应中搜索值,如下图所示。

SoapUI Assertions

步骤 7:单击保存按钮后,将显示以下图像,其中我们可以看到 XPath 匹配断言是有效的。

SoapUI Assertions

XQuery 匹配断言

XQuery 匹配类似于 XPath 表达式,不同之处在于它使用 XQuery 表达式从目标响应代码中选择字符串,并将 XQuery 表达式的结果与预期值进行比较。

以下是使用 XQuery 匹配断言的步骤。

步骤 1:为了验证XQuery 匹配断言,单击 (+) 图标以添加新的断言。

步骤 2:选择属性内容,然后单击XQuery 匹配断言,如下图所示。

SoapUI Assertions

步骤 3:单击添加按钮后,将显示 XQuery 匹配的配置。

SoapUI Assertions

步骤 4:要在 XQuery 匹配配置中声明 XML 命名空间,请单击声明按钮,该按钮将在 XQuery 中填充两个 XML 命名空间,如下图所示。

SoapUI Assertions

这是 XQuery 匹配中使用的命名空间的声明

步骤 5:填充 XML 命名空间后,现在定义用于选择和检索与 XQuery 表达式匹配的值的 XQuery 表达式,如下图所示

以下是获取结果的查询结构。

SoapUI Assertions

步骤 6:定义表达式后,单击从当前选择按钮以从当前响应 XML 文件中检索并匹配内容,如下图所示。

SoapUI Assertions

以下是从 XML 响应中检索的数据。

步骤 7:单击保存按钮后,将显示下图,其中我们可以看到 XQuery 匹配断言是有效的。

SoapUI Assertions
下一个主题SoapUI 属性