如果 SOAP Fault 有特定消息,如何使 SoapUI 测试成功?

How to have a SoapUI test successfull if SOAFault has a particular message?

我有一个执行 WSDL 调用的 SoapUI 测试。

如果满足以下任一条件,则此 WSDL 调用被视为成功

我如何编写在两种情况下(显然只有那些情况下)都能成功的 SoapUI 测试?

编辑 我的测试用例已经定义了 3 个断言:

我想要类似的东西

我想这个断言可以完成工作:

A) 响应是有效的 SOAPResponse:

  • 添加断言 -> SoapResponse
  • 添加断言 -> 不是 soapFault

B) 响应是具有特定故障字符串的 SOAPFault

  • 添加断言 -> SoapFault
  • 添加断言 -> XPath 匹配并配置与您的故障字符串和预期结果相关的 Xpath 表达式

SoapUI 将无法开箱即用。您指定的所有断言都具有(等效于)布尔值 AND:它们都必须通过才能通过该步骤。

我可以看到两个选项来解决你的困境。

  1. 重组您的测试用例,以便您可以将错误与非错误分开检查。
  2. 您将不得不使用 Groovy 脚本断言,处理您的逻辑。

可能是这样的:

def status = messageExchange.responseHeaders["#status#"][0]
if(status.contains("500")) {
    log.info "Fault"
    def faultStr = context.expand( '${#Response#//*:faultstring}' )
    assert faultStr.contains("something special")
} else {
    log.info "Non Fault"
}

您的其他两个断言,SOAP 响应和架构合规性,无论是否有错都应该适用。

如果您的 Web 服务可以 return 2 个响应,那么您需要编写 2 个测试。 1 个表示 SOAP 有效,另一个表示 SOAP 错误