如果 SOAP Fault 有特定消息,如何使 SoapUI 测试成功?
How to have a SoapUI test successfull if SOAFault has a particular message?
我有一个执行 WSDL 调用的 SoapUI 测试。
如果满足以下任一条件,则此 WSDL 调用被视为成功
- 回复有效
SOAPResponse
- 响应是具有特定
faultstring
的 SOAPFault
我如何编写在两种情况下(显然只有那些情况下)都能成功的 SoapUI 测试?
编辑 我的测试用例已经定义了 3 个断言:
- SOAP 响应
- 架构合规性
- 不是 SOAP 故障
我想要类似的东西
- SOAP 响应
- 架构合规性
- 不是 SOAP 故障
- SOAP 故障
- XPath 匹配
我想这个断言可以完成工作:
A) 响应是有效的 SOAPResponse:
- 添加断言 -> SoapResponse
- 添加断言 -> 不是 soapFault
B) 响应是具有特定故障字符串的 SOAPFault
- 添加断言 -> SoapFault
- 添加断言 -> XPath 匹配并配置与您的故障字符串和预期结果相关的 Xpath 表达式
SoapUI 将无法开箱即用。您指定的所有断言都具有(等效于)布尔值 AND:它们都必须通过才能通过该步骤。
我可以看到两个选项来解决你的困境。
- 重组您的测试用例,以便您可以将错误与非错误分开检查。
- 您将不得不使用 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 错误
我有一个执行 WSDL 调用的 SoapUI 测试。
如果满足以下任一条件,则此 WSDL 调用被视为成功
- 回复有效
SOAPResponse
- 响应是具有特定
faultstring
的
SOAPFault
我如何编写在两种情况下(显然只有那些情况下)都能成功的 SoapUI 测试?
编辑 我的测试用例已经定义了 3 个断言:
- SOAP 响应
- 架构合规性
- 不是 SOAP 故障
我想要类似的东西
- SOAP 响应
- 架构合规性
- 不是 SOAP 故障
- SOAP 故障
- XPath 匹配
我想这个断言可以完成工作:
A) 响应是有效的 SOAPResponse:
- 添加断言 -> SoapResponse
- 添加断言 -> 不是 soapFault
B) 响应是具有特定故障字符串的 SOAPFault
- 添加断言 -> SoapFault
- 添加断言 -> XPath 匹配并配置与您的故障字符串和预期结果相关的 Xpath 表达式
SoapUI 将无法开箱即用。您指定的所有断言都具有(等效于)布尔值 AND:它们都必须通过才能通过该步骤。
我可以看到两个选项来解决你的困境。
- 重组您的测试用例,以便您可以将错误与非错误分开检查。
- 您将不得不使用 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 错误