在groovy中检查HTTP状态代码

时间:2014-02-18 07:12:18

标签: rest groovy soapui

我已经创建了RESTful服务,我正在SOAPUI项目中对其进行测试。 在测试用例中,我想验证HTTP脚本中的groovy响应状态代码。

我尝试过使用以下内容:

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

assert value==200

但是它总是给出错误并且没有验证。(我正在使用的测试确实返回200状态代码,但我不知道如何正确地放置groovy)

任何人都可以引导我。我不想在groovy中执行GET操作。我正在使用soapui单独执行GET,我只想测试状态代码。

2 个答案:

答案 0 :(得分:8)

这对将来的使用非常有用。我做了一些搜索,并在SoapUI forum找到了关于此的帖子。

我用HTTP步骤测试了它(对不起,我没有任何其他服务可以使用),它运行良好。幸运的是,SoapUI以相同的方式处理大多数请求,因此它也适用于您。

原始代码:

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)

答案 1 :(得分:1)

对于在 ReadyAPI 中工作的任何人来说,自 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)

这会将 context 变量替换为 testRunner 变量,这两个变量都由 ReadyAPI 公开。

ReadyAPI Groovy docs