SoapUI - 使用Groovy Script在标记之间提取XML值

时间:2017-05-25 20:39:18

标签: xml groovy soapui

我想迭代x个测试步骤并在Groovy中提取XML值

我在StackOverflow上发现了一些工作并实际提取了值的东西。但是,我无法实现循环。

这是a link!我发现哪个非常有用;我仍然无法实施。

这是我在这里找到的脚本:

def project = testRunner.testCase.testSuite.project ;
def tcase = 
project.testSuites["Testsuite_name"].testCases["TestCase Name"] ; 
def tstep = tcase.getTestStepByName("TestStep");

def responseTestSuite1 = tstep.getPropertyValue("response");

log.info(responseTestSuite1.toString());

def gutils = new com.eviware.soapui.support.GroovyUtils( context );
def holder = gutils.getXmlHolder("$responseTestSuite1");

def byteResponse = holder.getNodeValue("//*:number")

输出结果为:脚本结果:023903122

答案可以找到here

如果有人能提供帮助那就太棒了!

1 个答案:

答案 0 :(得分:0)

在您的情况下,变量tcase引用TestCase对象。

您可以使用tcase.getTestStepCount()来获取步数,tcase.getTestStepAt(int index)可以逐步获取。

所以循环完成你可以这样做的步骤

def tcase = context.getTestCase()
def stepCount = tcase.getTestStepCount()
for(int stepId = 0; stepId<stepCount; stepId++) {
    def tstep = tcase.getTestStepAt(stepId)
    if( tstep instanceof com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequestStep ) {
        //only if this wsdl test do something:
        log.info( "label    : ${ tstep.getLabel() } " )
        log.info( "   class : ${ tstep.getClass() } " )
        log.info( "   props : ${ tstep.getPropertyNames() } " )
    }
}