SoapUI - 断言

断言可以解释为检查点或验证点。一旦请求发送到 Web 服务器,就会收到响应。需要验证响应是否包含预期的数据。为了验证响应,SoapUI 具有断言功能。

注意事项

  • 断言用于验证 TestStep 在执行期间收到的消息。

  • 它将消息的一部分或整个消息与某个预期值进行比较。

  • 可以将任意数量的断言添加到 TestStep,每个断言验证响应消息的不同方面和内容。

  • TestStep 执行后,其所有断言都将应用于收到的响应,如果其中任何一个断言失败,则 TestStep 在 TestCase 视图中被标记为失败。

  • 失败的条目显示在测试执行日志中。

执行日志

断言类型

SoapUI 支持多种响应断言。

以下是 SoapUI 支持的断言列表。

断言 描述
属性内容
Contains 检查指定字符串是否存在。它也支持正则表达式。
Not Contains 检查指定字符串是否存在。它也支持正则表达式。
XPath Match 使用 XPath 表达式选择目标节点及其值。将 XPath 表达式的结果与预期值进行比较。
XQuery Match 使用 Xquery 表达式从目标属性中选择内容。将 XQuery 表达式的结果与预期值进行比较。
合规性、状态、标准
HTTP 下载所有资源(HTTP DOwnload All Resource) 下载所有引用为 HTML 文档的资源(图像、脚本等)并验证它们是否可用。适用于任何包含 HTML 的属性。
无效的 HTTP 状态代码(Invalid HTTP Status Codes) 检查目标 TestStep 是否收到 HTTP 结果,其状态代码不在定义的代码列表中。适用于任何接收 HTTP 消息的 TestStep。
非 SOAP 故障(Not SOAP Fault) 验证最后收到的消息不是 SOAP 故障。适用于 SOAP TestSteps。
架构合规性(Schema Compliance) 验证最后收到的消息是否符合相关的 WSDL 或 WADL 架构定义。适用于 SOAP 和 REST 测试步骤。架构定义 URL 支持属性扩展(例如 ${#System#my.wsdl.endpoint}/services/PortType? wsdl)。
SOAP 故障(SOAP Fault) 验证最后收到的消息是否为 SOAP 故障。适用于 SOAP TestSteps SOAP 请求 - 验证最后收到的请求是否为有效的 SOAP 请求。仅适用于 MockResponse 测试步骤。
SOAP 响应(SOAP Response) 验证最后收到的响应是否为有效的 SOAP 响应。仅适用于 SOAP TestRequest 步骤。
有效 HTTP 状态代码(Valid HTTP Status Codes) 检查目标 TestStep 是否收到具有定义代码列表中的状态代码的 HTTP 结果。适用于接收 HTTP 消息的任何 TestStep。
WS-Addressing 请求(WS-Addressing Request) 验证最后收到的请求是否包含有效的 WS-Addressing 标头。仅适用于 MockResponse TestSteps。
WS-Addressing 响应(WS-Addressing Response) 验证最后收到的响应是否包含有效的 WS-Addressing 标头。仅适用于 SOAP TestRequest 步骤。
WS-Security Status 验证最后收到的消息是否包含有效的 WS-Security 标头。适用于 SOAP 测试步骤。
Script
脚本断言(Script Assertion) 允许用户执行自定义脚本来执行用户定义的验证。仅适用于 TestSteps(即不适用于属性)
SLA
响应 SLA(Response SLA)​​ 验证最后收到的响应的响应时间是否在定义的限制内。适用于脚本 TestSteps 和发送请求并接收响应的 TestSteps。
JMS
JMS 状态(JMS Status) 验证目标 TestStep 的 JMS 请求是否成功执行。适用于具有 JMS 端点的请求 TestSteps。
JMS 超时(JMS Timeout) 验证目标 TestStep 的 JMS 语句所用时间不超过指定的持续时间。适用于具有 JMS 端点的请求 TestSteps。
安全性
敏感信息暴露(Sensitive Information Exposure) 验证响应消息是否不暴露有关目标系统的敏感信息。我们可以将此断言用于 REST、SOAP 和 HTTP TestSteps。
JDBC
JDBC 状态(JDBC Status) 验证目标 TestStep 的 JDBC 请求是否成功执行。仅适用于 JDBC TestSteps。
JDBC 超时(JDBC Timeout) 验证目标 TestStep 的 JDBC 语句所用时间不超过指定的持续时间。仅适用于 JDBC TestSteps。