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

时间:2015-03-12 09:12:37

标签: web-services wsdl soapui

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

如果

,则认为此WSDL调用是成功的
  • 响应是有效的SOAPResponse
  • 回复是具有特定SOAPFault
  • faultstring

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

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

  • SOAP响应
  • 架构合规性
  • 非SOAP FAULT

我想要像

这样的东西
  • SOAP响应
    • 架构合规性
    • 非SOAP FAULT
  • SOAP Fault
    • XPath Match

3 个答案:

答案 0 :(得分:0)

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

我可以看到两种方法来解决你的困境。

  1. 重组您的测试用例,以便您可以将故障与非故障分开检查。
  2. 您必须使用Groovy脚本断言,处理您的逻辑。
  3. 可能是这样的:

    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响应和Schema合规性,无论是否有错都应该适用。

答案 1 :(得分:0)

如果您的Web服务可以返回2个响应,那么您需要编写2个测试。 1表示SOAP有效,另一表为SOAP故障

答案 2 :(得分:-1)

我猜这个断言会完成这项工作:

  • 响应是有效的SOAPResponse:

添加断言 - > SoapResponse

添加断言 - >不是soapFault

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

添加断言 - >的SOAPFault

添加断言 - > XPath匹配并配置与faultString和预期结果相关的Xpath表达式