0

如果soap请求失败意味着Status != "HTTP/1.1 200 OK",testCase应该停止并且没有进一步的步骤应该运行

在groovy中有一种方法可以做到这一点,但我不希望在测试用例中添加额外的测试步骤

            def headers = testRunner.testCase.getTestStepByName("RequestName").httpRequest.response.responseHeaders['#status#']
            if (!headers.contains("HTTP/1.1 200 OK"))
            {
                testRunner.fail("" + headers + "Flow failed")
                testRunner.fail("No futher testSteps will be run inside the current case")
            }

请注意,由于其他一些常规代码限制,我无法更改以下设置

在此处输入图像描述

不更改上述选项的原因我有一个测试用例,其中有 10 个步骤。1 是请求,其他 9 个步骤验证各种事情。因此,如果我选中“错误中止”选项并且第 3 步失败。然后从 4 到 10 的步骤都没有运行。所以请提供一个考虑不使用“中止”选项的解决方案

那么您能否在不勾选此选项的情况下提供脚本断言的解决方案。“错误中止”

由于testRunner.fail在脚本断言中不可用,并且正常断言(断言 0==1)不会停止测试用例,除非我们勾选上述设置。我被这个限制所困

4

2 回答 2

2

您可以testRunner通过context脚本断言中可用的变量访问,所以为什么不使用类似的东西:

def httpResponseHeader = messageExchange.responseHeaders
def headers = httpResponseHeader["#status#"]
log.info("Status: " + headers)

if (!headers.contains("HTTP/1.1 200 OK")) { 
    context.testRunner.fail("" + headers + "Flow failed")
    context.testRunner.fail("No futher testSteps will be run inside the current case")
}
于 2018-03-30T12:47:39.863 回答
0

谢谢@craigcaulifield,你的回答对我帮助很大。

很高兴知道即使在脚本断言中 testRunner 也以一种棘手的方式可用

现在使用脚本断言,如果请求失败,我们可以停止测试用例。

但是,当我们单独运行请求而不是作为测试用例的一部分时,就会出现错误

cannot invoke method fail() on null object

出现此错误是因为

context.testRunner.fail()

testRunner 仅在测试用例执行期间可用,而不是单独的 testStep 执行

所以要克服这里是可以照顾这两种情况的代码

def responseHeaders=messageExchange.responseHeaders
def status=responseHeaders["#status#"]

// Checking if status is successfully fetched i.e. Response is not empty
if(status!=null)
{
    if(!status.contains("HTTP/1.1 200 OK"))
   {
  // context.testRunner is only available when the request is run as a part of testCase and not individually 
    if(context.testRunner!=null)
    {
          // marking the case fail so further steps are not run
        context.testRunner.fail()
     }
    assert false, "Request did not returned successful status. Expected =  [HTTP/1.1 200 OK] but Actual =  " + status
   }
}
else
{
    if(context.testRunner!=null)
    {
    context.testRunner.fail()
    }
    assert false, "Request did not returned any response or empty response"

}
于 2018-04-02T03:20:33.020 回答