在groovy中检查响应头

在groovy中检查响应头,groovy,soapui,Groovy,Soapui,我正在尝试测试响应标题是否包含X-Duration-MS文本。我很确定,如果X-Duration-MS不在头上,那么我检查assert的方式缺少主检查。你能帮我测试一下吗 这是我的代码: def httpResponseHeaders = context.testCase.testSteps["Testname"].testRequest.response.responseHeaders //log.info (httpResponseHeaders) httpRespo

我正在尝试测试响应标题是否包含X-Duration-MS文本。我很确定,如果X-Duration-MS不在头上,那么我检查assert的方式缺少主检查。你能帮我测试一下吗

这是我的代码:

    def httpResponseHeaders = context.testCase.testSteps["Testname"].testRequest.response.responseHeaders
    //log.info (httpResponseHeaders)
    httpResponseHeaders.each
    {
      k,v ->
        if(k=~"X-Duration-MS"){
          assert k == "X-Duration-MS"
      }
    }
使用groovy脚本 您正在检查是否有一个
X-Duration-MS
响应头,不管其值如何。然后可以使用
httpResponseHeaders
上的
keySet()
函数获取所有http头名称,然后使用
contains()
检查所需头是否在列表中。因此,您可以尝试:

def httpResponseHeaders = context.testCase.testSteps["Testname"].testRequest.response.responseHeaders
assert httpResponseHeaders.keySet().contains("X-Duration-MS")
使用脚本断言 您还可以在请求中使用
脚本断言
而不是
Groovy
testStep来实现您的目标。在左下角的请求UI中有一个
断言(0)
文本,单击它,然后使用断言面板中的
+
按钮添加一个
脚本断言
。然后,在这个脚本中,您可以执行与在Groovy testStep中相同的操作,而无需找到testStep来获取响应,因为在
脚本断言中有
messageExchange
对象,您可以使用它来获取当前请求、响应、http头的详细信息。。。因此,您可以简单地使用:

def httpResponseHeaders = messageExchange.getResponseHeaders() 
assert httpResponseHeaders.keySet().contains("X-Duration-MS")

使用groovy脚本 您正在检查是否有一个
X-Duration-MS
响应头,不管其值如何。然后可以使用
httpResponseHeaders
上的
keySet()
函数获取所有http头名称,然后使用
contains()
检查所需头是否在列表中。因此,您可以尝试:

def httpResponseHeaders = context.testCase.testSteps["Testname"].testRequest.response.responseHeaders
assert httpResponseHeaders.keySet().contains("X-Duration-MS")
使用脚本断言 您还可以在请求中使用
脚本断言
而不是
Groovy
testStep来实现您的目标。在左下角的请求UI中有一个
断言(0)
文本,单击它,然后使用断言面板中的
+
按钮添加一个
脚本断言
。然后,在这个脚本中,您可以执行与在Groovy testStep中相同的操作,而无需找到testStep来获取响应,因为在
脚本断言中有
messageExchange
对象,您可以使用它来获取当前请求、响应、http头的详细信息。。。因此,您可以简单地使用:

def httpResponseHeaders = messageExchange.getResponseHeaders() 
assert httpResponseHeaders.keySet().contains("X-Duration-MS")