如何在groovyScript

时间:2015-06-16 07:57:16

标签: groovy soapui

关于soapUI和groovy,我试图获得断言(工作)并将XML中的响应转换为变量。我收到了错误

groovy.lang.MissingMethodException: No signature of method: com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequestStep.getResponseAsXml() is applicable for argument types: () values: [] error at line: 6

我尝试添加import com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequestStep,但仍然无法想象。我做了另一次消息交换的尝试,也无济于事 - 据我所知,你可以在这个特定的实例中实际使用messageExchange

import com.eviware.soapui.model.testsuite.Assertable.AssertionStatus
def TestCase = testRunner.getTestCase()
def StepList = TestCase.getTestStepList()

StepList.each
{
    if(it.metaClass.hasProperty(it,'assertionStatus'))
    {
        if(it.assertionStatus == AssertionStatus.FAILED)
        {
            def ass = it.getAssertableContentAsXml()
            def res = it.getResponseContentAsXml()

            log.error "${it.name} " + "${it.assertionStatus}"
            log.info ass + res

        }
    }
}

1 个答案:

答案 0 :(得分:1)

如果您想从com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequestStep获得响应,可能的方法是首先使用getTestStep()方法从此类中获取testStep。

此方法返回类com.eviware.soapui.model.testsuite.TestStep的对象,您可以使用getPropertyValue(java.lang.string)方法从此对象获取testSteps属性,如request,response,endpoint ...。

因此,在您的情况下,要使用响应:

def res = it.getTestStep().getPropertyValue('Response')

而不是:

def res = it.getResponseContentAsXml()

由于@tim_yates在这种情况下对异常描述进行了评论,因此非常清楚,所以请查看SOAPUI api以及下次:)中答案中提供的链接。

希望这有帮助,