在SoapUI Groovy步骤中获取上一个测试步骤的状态

在SoapUI Groovy步骤中获取上一个测试步骤的状态,groovy,soapui,status,Groovy,Soapui,Status,我已经设置了以下测试用例: Datasource Soap Request Groovy Script Datasource loop 我想使用Groovy脚本测试步骤获得SoapRequest测试步骤的状态 可按如下所示进行: myTestStepResult = testRunner.runTestStepByName("Soap Request") myStatus = myTestStepResult.getStatus() 但是我不想运行TestStep-by脚本,只想使用SO

我已经设置了以下测试用例:

Datasource
 Soap Request
 Groovy Script
Datasource loop
我想使用Groovy脚本测试步骤获得SoapRequest测试步骤的状态

可按如下所示进行:

myTestStepResult = testRunner.runTestStepByName("Soap Request")
myStatus = myTestStepResult.getStatus()
但是我不想运行TestStep-by脚本,只想使用SOAPUITestRunner。 在datasink测试步骤中,我可以使用:

${=testRunner.results[testRunner.results.size()-1].status}
不幸的是,上述内容在GroovyScript测试步骤中不起作用


有什么想法吗?

可以在不使用测试步骤名称的情况下运行测试步骤,并根据需要获取状态。并且假设测试步骤序列没有变化,即,
Soap请求
步骤始终是
Groovy脚本
步骤的前一个步骤,并且没有其他步骤介于这两个步骤之间

Groovy脚本:

log.info testRunner.runTestStep(context.testCase.testStepList[context.currentStepIndex-1])。状态

可以在不使用测试步骤名称的情况下运行测试步骤,并根据需要获取状态。并且假设测试步骤序列没有变化,即,
Soap请求
步骤始终是
Groovy脚本
步骤的前一个步骤,并且没有其他步骤介于这两个步骤之间

Groovy脚本:

log.info testRunner.runTestStep(context.testCase.testStepList[context.currentStepIndex-1])。状态

为避免必须(再次)运行测试步骤,请尝试以下操作:

results = testRunner.getResults()
status = results.get(results.size() - 1).getStatus()
log.info status
运行测试用例后,脚本日志应该显示上一个测试步骤的状态

请注意,在运行测试用例时,必须执行包含代码的Groovy脚本测试步骤。如果仅运行测试步骤,将出现以下错误:

(java.lang.ArrayIndexOutOfBoundsException)


这是正常的,因为如果列表为空,则无法获得results.size()。

为避免必须再次运行测试步骤,请尝试以下操作:

results = testRunner.getResults()
status = results.get(results.size() - 1).getStatus()
log.info status
运行测试用例后,脚本日志应该显示上一个测试步骤的状态

请注意,在运行测试用例时,必须执行包含代码的Groovy脚本测试步骤。如果仅运行测试步骤,将出现以下错误:

(java.lang.ArrayIndexOutOfBoundsException)


这是正常的,因为如果列表为空,则无法获得results.size()。

Han van Oostende,您的意思是要使用硬编码的步骤名称吗?请澄清其他情况?另外,没有得到-“但是我不想通过脚本运行TestStep,而只是使用soapui testrunner。”。你能澄清一下吗?希望澄清一下:我不想使用groovyscript testrunner.runTestStepByName运行测试用例搞乱了最后一条评论:希望澄清一下:我注意到如果我使用[Groovy脚本]myTestStepResult=testrunner.runTestStepByName(“Soap请求”)myStatus=myTestStepResult.getStatus()当它到达Soap请求步骤时,它将运行testStep soapRequest一次,当它到达调用testRunner的Groovy脚本时,它将运行第二次。runTestStepByName(“Soap请求”)我只需要第一次调用的状态(当它运行testcase时)Han van Oostende,你的意思是想使用硬编码的步骤名称吗?请澄清其他情况?另外,没有得到-“但是我不想通过脚本运行TestStep,而只是使用soapui testrunner。”。你能澄清一下吗?希望澄清一下:我不想使用groovyscript testrunner.runTestStepByName运行测试用例搞乱了最后一条评论:希望澄清一下:我注意到如果我使用[Groovy脚本]myTestStepResult=testrunner.runTestStepByName(“Soap请求”)myStatus=myTestStepResult.getStatus()当它到达Soap请求步骤时,它将运行testStep soapRequest一次,当它到达调用testRunner的Groovy脚本时,它将运行第二次。runTestStepByName(“Soap请求”)我只需要第一次调用的状态(当它运行testcase时),如果可以的话,我将在报告中尝试使用这个状态。谢谢!我要尝试一下,如果这是有效的,谢谢!