我对GROOVY脚本很新。 我从soapUI触发了一个请求,它基本上是登录数据库并返回cookie作为标题的一部分
我需要一个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。
答案 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。