soapUI groovy script groovy.lang.MissingMethodException



当我尝试在soapui测试步骤中解析响应时,将收到以下异常。仍然没有运气。

我错过了导入还是库?

groovy.lang.missingmethodexception:没有方法的签名: java.lang.string.getNodeValue((适用于参数类型: (java.lang.string(值: [//conversionRateresponse/conversionRateresult]行的错误:16

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);
project = testRunner.getTestCase().getTestSuite().getProject().getWorkspace().getProjectByName("FirstProject")
testSuite = project.getTestSuiteByName("TestSuite 1");
testCase = testSuite.getTestCaseByName("TestCase 1");
testCase.setPropertyValue("fromCurrency","EUR")
testCase.setPropertyValue("toCurrency","TRL")
testStep=testCase.testSteps["SOAP Request1"]
def responseHolder=testStep.getPropertyValue("response");
 def refNum = responseHolder.getNodeValue("//ConversionRateResponse/ConversionRateResult")

响应如下

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <ConversionRateResponse xmlns="http://www.webserviceX.NET/">
         <ConversionRateResult>-1</ConversionRateResult>
      </ConversionRateResponse>
   </soap:Body>
</soap:Envelope>

您可以将Script Assertion添加到SOAP请求测试步骤中。

这是脚本:

//Check if the response is not empty
assert context.response, 'Response is empty or null'
def rate = new XmlSlurper().parseText(context.response).'**'.find{it.name() == 'ConversionRateResult'}?.text() as Integer
log.info "Conversion rate result is : $rate "
//Check if the result rate is -1, change if needed
assert -1 == rate

我可以看到您已经使用了getNodeValue,但是在 string 上是错误的

如果看到错误,则说:"没有方法的签名:java.lang.string.getNodeValue((适用于参数类型:(Java.lang.string(valution "P>

请参阅以下代码,其中我们使用了正确的东西上使用getNodeValue

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context);
def response = groovyUtils.getXmlHolder('SOAP Request#Response')
def refNum=response.getNodeValue("//*:ConversionRateResponse//*:ConversionRateResult")
log.info refNum

getNodeValue 是一个非常有用的功能,将有助于从XML提取值,同样,我们有 getDomnode ,它适用于节点,而不是节点

最新更新