获取SoapUI groovy脚本中Rest请求类型的上一个测试步骤的名称
我使用groovy脚本从REST请求的响应中传输特定属性,如下所示:获取SoapUI groovy脚本中Rest请求类型的上一个测试步骤的名称,rest,groovy,properties,soapui,Rest,Groovy,Properties,Soapui,我使用groovy脚本从REST请求的响应中传输特定属性,如下所示: def setCookie = testRunner.testCase.testSteps["SubmitCompleteDeviceRegistration"].testRequest.response.responseHeaders["Set-Cookie"] def global = com.eviware.soapui.SoapUI.globalProperties re = /(SESSION_AUTHENTICA
def setCookie = testRunner.testCase.testSteps["SubmitCompleteDeviceRegistration"].testRequest.response.responseHeaders["Set-Cookie"]
def global = com.eviware.soapui.SoapUI.globalProperties
re = /(SESSION_AUTHENTICATION_TOKEN=[A-Za-z0-9_-]+;)/
matcher = ( setCookie =~ re )
def cookie = matcher[0][0]
global.setPropertyValue("SESSION_AUTHENTICATION_TOKEN","$cookie")
return cookie
现在我要做的是将上述测试步骤的名称命名为“SubmitCompletedDeviceRegistration”,变量,这样我就可以对各种REST请求使用传输
此变量TestStep的名称应等于RestRequest类型的上一个TestStep的名称
如何定义与此条件相等的测试步骤
我试着用类似的东西
def prevGroovyTestStep =
testRunner.testCase.findPreviousStepOfType(testRunner.testCase.getTestStepByName
("SubmitCompleteDeviceRegistration"),RestRequest)
log.info(prevGroovyTestStep.getName())
但我不知道如何实现这一点
任何帮助都将不胜感激 获取上一个步骤名称
def previousStepName=context.testCase.testStepList[context.currentStepIndex-1].name
log.info“以前的步骤名称为:${previousStepName}”
如果前一步的类型是Rest请求,则获取前一步的名称
def testStep=context.testCase.testStepList[context.currentStepIndex-1]
def previousStepName
if(com.eviware.soapui.impl.wsdl.teststeps.RestTestRequestStep的testStep实例){
previousStepName=testStep.name
}否则{
log.error“上一步不是Rest请求类型”
}
如果(以前的步骤名称){
log.info“以前的步骤名称为:${previousStepName}”
}
如果在上述情况下类型不匹配,它将记录错误消息
更新-根据本问题作者的最新评论进行更新。下面的一个可以满足您的所有需要,上面的可能不再需要了
STEP_name
,其值为需要添加http头的测试步骤名称。正如您所评论的,本例中的最后一个测试步骤名称Cookie
的测试步骤名称。暂时使用占位符,是否只需要上一步?或者应该是上一步和匹配的休息步骤?如果上一个步骤不是Rest步骤类型,你想要什么?嗨,Rao,谢谢你的回复。对不起,我可能没有足够清楚地定义我需要什么。我需要的是rest请求类型的最后一个执行的teststep,也就是说,它可以从groovy teststep中删除3个步骤,只要它是rest请求。我认为脚本应该从上一步开始,如果这一步不是rest请求,它将继续上一步,直到满足条件为止。如果不满足条件,则应继续操作,而不记录错误。你能调整脚本以满足这些要求吗?你能解释一下你的用例是什么,而不是你想实现什么,可能还有其他或更好的解决方案吗?好的,看来问题的摘要引起了混乱。如果需要提取头值(可以是会话id或cookie)并将其分配给某个全局属性。这就是你的问题吗?是的,我确实提取了一个头值(cookie)并将其分配给属性。我想做的是从REST测试步骤的响应中提取一个cookie,以便在下面的REST请求中使用它。我使用groovy脚本来实现这一点,但是每次我将这个测试步骤复制到一个新的测试用例时,我都必须根据提取cookie所需的测试步骤的名称来调整脚本。此teststep将始终是最后执行的REST teststep,这就是为什么我试图找到一种方法来轻松识别此teststep的名称并将其用作脚本中的变量。理想情况下,我甚至不必将groovy teststep复制到每个testcase,而只需将其添加为一个独立的testcase,可以在每个testcase中运行(运行testcase>指向groovy测试步骤),但是其他方法也可以。