SoapUI 断言


SoapUI 断言

什么是断言?

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

断言的特点

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

断言的类型

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

  1. Property Content
  2. Compliance Status Standard
  3. Script
  4. SLA
  5. JMS
  6. Security

Property Content

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

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

Compliance, Status and Standards

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

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

Script

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

Security

  • 敏感信息暴露:用于对接收到的 XML 响应消息进行认证,不会向目标系统泄露敏感信息。

SLA

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

JMS

  • JMS Status:用于检查测试阶段的JMS请求是否已成功执行,对带有JMS端点的测试步骤有好处。它被实现为使用 JMS 端点处理测试步骤请求。
  • JMS 超时: JMS 超时用于验证 JMS 指定的测试步骤的描述所花费的时间不会超过指定的持续时间。

JDBC

  • JDBC 状态: JDBC 状态用于在 SoapUI 测试工具中验证指定测试步骤的请求是否成功执行。它只能实现到 JDBC TestSteps。
  • JDBC 超时: JDBC 超时用于验证指定测试步骤的 JDBC 语句花费的时间没有超过指定的时间限制。

Contains Assertion

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

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

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

SoapUI 断言

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

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

SoapUI 断言

第三步:点击添加按钮后,会弹出一个包含断言的对话框。

SoapUI 断言

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

步骤4:一旦OK按钮被点击时,将控制权转给请求萨姆窗口,如下图所示。

SoapUI 断言

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

不包含断言

它用于在 Web 响应 xml 文件中搜索不存在的指定字符串或文本。以下是创建 Not-Contains 断言的步骤:

步骤 1:为了验证Not-Contains Assertion,单击 (+) 图标以添加新的断言。

第二步:选择Property Content,然后点击Not Contains assertion,如下图。

SoapUI 断言

第三步:点击添加按钮后,会弹出一个NotContains Assertions对话框。

SoapUI 断言

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

SoapUI 断言

它验证定义语句Integer A是否存在。如果语句存在,它显示了一个错误信息,如果定义字符串不是存在于当前内容,条件不包含VALID,我们可以看到上面的图片。

XPath 匹配断言

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

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

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

第二步:选择Property Content,然后点击XPath Match assertion,如下图。

SoapUI 断言

第 3 步:单击“添加”按钮后,它会显示 XPATH 窗口的配置。

SoapUI 断言

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

SoapUI 断言

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

declare namespace soap='http://www.w3.org/2003/05/soap-envelope';  
declare namespace ns1='http://tempuri.org/';

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

SoapUI 断言

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

SoapUI 断言

步骤 7:单击Save按钮后,显示下图,其中我们可以看到 XPath Match 断言为VALID

SoapUI 断言

XQuery 匹配断言

的XQuery的匹配类似,除了它使用XQuery表达式来选择从目标响应代码串和XQuery表达式的结果与预期值进行比较的XPath表达式。

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

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

第二步:选择Property Content,然后点击XQuery Match assertion,如下图。

SoapUI 断言

步骤 3:单击Add按钮后,它会显示 XQuery Match 的配置。

SoapUI 断言

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

SoapUI 断言

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

declare namespace ns1='http://tempuri.org/';  
declare namespace soap='http://www.w3.org/2003/05/soap-envelope';

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

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

<resultData>  
{  
for $x in //ns1:AddResult  
return $x  
}  
</resultData>

SoapUI 断言

第六步:定义好表达式后,点击Select from current按钮,从当前Response XML文件中检索匹配内容,如下图。

SoapUI 断言

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

<resultData>  
  <AddResult xmlns="http://tempuri.org/" xmlns:soap="http://www.w3.org/2003/05/soap-envelope"  
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">20</AddResult>  
</resultData>

步骤 7:点击Save按钮后,显示下图,我们可以看到 XQuery Match 断言为VALID

SoapUI 断言