soapUI groovy脚本groovy.lang.MissingMethodException

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了soapUI groovy脚本groovy.lang.MissingMethodException相关的知识,希望对你有一定的参考价值。

当我尝试在soapUI测试步骤中解析响应时收到以下异常。还尝试了getXMLHolder方法。仍然没有运气。

我错过了导入或库吗?

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 Request Test步骤。

这是脚本:

//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)values”

请参阅下面的代码,我们在正确的事情上使用了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用于节点而不是值

以上是关于soapUI groovy脚本groovy.lang.MissingMethodException的主要内容,如果未能解决你的问题,请参考以下文章

soapui-使用groovy脚本执行用例请求

soapui-groovy脚本中文乱码及符号乱码响应乱码解决方案

SoapUI NG Pro v1.9发布,Groovy功能消除脚本困扰

SOAPUI中的Groovy脚本,用于在Soap请求中插入新标记

SOAPUI中文教程---脚本和脚本库

SOAPUI Groovy脚本,用于读取CSV并分配给属性