使用GROOVY脚本将Cookie添加到SoapUI的标头中

时间:2015-11-26 16:23:10

标签: cookies groovy automation soapui

我对GROOVY脚本很新。 我从soapUI触发了一个请求,它基本上是登录数据库并返回cookie作为标题的一部分

enter image description here

我需要一个groovy脚本,它可以获取cookie (EDEV) [在上面的图片中标记为红色]的值,并将值传递给TestSuite中的所有其他请求。

目前我正在使用下面的GROOVY脚本来实现这一目标,但无法做到这一点。有人可以帮忙吗?

import com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport
def myCookieStore = HttpClientSupport.getHttpClient().getCookieStore()
def val = testRunner.testCase.testSteps['Login'].testRequest.response.getResponseHeaders()
def re = /(EDEV=.*,)/
def matcher = ( val =~ re )
def cookie = matcher[0][0]
def map=[:]
testRunner.testCase.testSteps['Login2'].testRequest.requestHeaders=map
def headers=testRunner.testCase.testSteps['Login2'].testRequest.requestHeaders
headers.put('Cookie', cookie)
testRunner.testCase.testSteps['Login2'].testRequest.requestHeaders=headers

其中Login是用于登录的testCase,Login2是目标testCase,其中需要传递cookie值并将其添加到请求标头中。

我已检查http://stackoverflow.com/questions/20640173/how-do-i-get-a-cookie-from-a-soapui-response-using-a-groovy-test-step此答案,并对我的脚本进行了一些编辑,但仍然无法在下一个请求中看到EDEV Cookie。

1 个答案:

答案 0 :(得分:0)

您正在阅读请求的标题, Cookie。

阅读你的cookie:

import com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport
def myCookieStore = HttpClientSupport.getHttpClient().getCookieStore()
def interestingCookie
myCookies.each {
    if(it.name == "EDEV")
        interestingCookie = it
}

会话中只有一个 Cookie存储,因此您必须将Cookie存储在某处,例如属性:

testCase.testSuite.project.setPropertyValue("interestingCookie", interestingCookie)

稍后,将此cookie设置回来

import org.apache.http.impl.Cookie.BasicClientCookie
import com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport
def myCookieStore = HttpClientSupport.getHttpClient().getCookieStore()
def interestingCookie = testCase.testSuite.project.getPropertyValue("interestingCookie")
def myNewCookie = new BasicClientCookie("EDEV", interestingCookie)
myCookieStore.addCookie(myNewCookie)

您可以在我的博客上找到additional details