Checking HTTP status codes in groovy

20,065

Solution 1

This is going to be very useful for future use. I did some searching and found a post regarding this at the SoapUI forum.

I tested it with an HTTP step (sorry, I don't have any rest services to use) and it works well. Luckily, SoapUI handles most all requests the same way so it should work for you as well.

And the raw code:

def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def httpResponseHeaders = context.testCase.testSteps["testName"].testRequest.response.responseHeaders
def httpStatus = httpResponseHeaders["#status#"]
def httpStatusCode = (httpStatus =~ "[1-5]\\d\\d")[0]

log.info("HTTP status code: " + httpStatusCode)

Solution 2

For anyone working in ReadyAPI, the solution has changed a bit since 2014.

def httpResponseHeaders = testRunner.testCase.getTestStepByName["testName"].testRequest.response.responseHeaders
def httpStatus = httpResponseHeaders["#status#"]
def httpStatusCode = (httpStatus =~ "[1-5]\\d\\d")[0]

log.info("HTTP status code: " + httpStatusCode)

This swaps the context variable for the testRunner variable, both of which are exposed by ReadyAPI.

ReadyAPI Groovy docs

Share:
20,065
Amrit
Author by

Amrit

Updated on February 12, 2021

Comments

  • Amrit
    Amrit about 3 years

    I have created a RESTful service and I am testing it in SOAPUI project. In a test case I want to verify the HTTP response status codes in groovy script.

    I have tried using the following:

    def value = messageExchange.responseHeaders["#status#"]
    
    assert value==200
    

    But it always gives the error and doesn't validates.(The test I am using does returns 200 status code, but I don't know how to put the groovy correctly)

    Can anyone plz guide me. I dont want to perform GET operation in the groovy. I am performing GET separately using soapui and I just want to test the status codes.

  • Rahul Dabas
    Rahul Dabas over 9 years
    Thanks. This helped me. Works the same way for Restfull service as well.