我从XML数据中获取值数组,我需要将该值存储在自定义属性中,然后我必须在Groovy脚本中使用它。
当我尝试编写这样的脚本时:
long a = 345236577970;
我在控制台中收到以下错误:
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def responseHolder = groovyUtils.getXmlHolder( messageExchange.responseContent )
def results = new XmlSlurper().parseText( messageExchange.response.responseContent )
if (results != null)
{
List rowset = results?.ResultSet?.Row?.collect{"${it.OBJ_ID} ${it.REL_OBJ_ID} ${it.CUST_MODEL_CD} ${it.TYPE_CD}"}
log.info(rowset)
context.testCase.setPropertyValue("RowData", rowset)
}
如何将这些值从脚本断言传输到 Groovy脚本?
答案 0 :(得分:0)
根据被抛出的异常:
No signature of method: com.eviware.soapui.impl.wsdl.testcase.WsdlTestCase.setPropertyValue() is applicable for argument types: (java.lang.String, java.util.ArrayList) values: [RowData, [18144046 5276601 CI DRVD, 18144050 5276601 CI DRVD, ...]]
Possible solutions: setPropertyValue(java.lang.String, java.lang.String), getPropertyValue(java.lang.String)
setPropertyValue
方法需要两个String
个参数。
您可以尝试将rowset
列表序列化为JSON字符串,并将此字符串传递给setPropertyValue
。接下来,当您需要将其作为列表读取时,您所要做的就是将此JSON字符串反序列化为List<String>
对象。以下是使用Groovy的类JsonOutput
和JsonSlurper
进行序列化和反序列化的方法:
import groovy.json.JsonOutput
import groovy.json.JsonSlurper
List<String> rowset = ['18144046 5276601 CI DRVD', '18144050 5276601 CI DRVD']
String json = JsonOutput.toJson(rowset)
List<String> fromJson = new JsonSlurper().parseText(json)
assert rowset == fromJson
您的更新部分可能如下所示:
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def responseHolder = groovyUtils.getXmlHolder( messageExchange.responseContent )
def results = new XmlSlurper().parseText( messageExchange.response.responseContent )
if (results != null)
{
List rowset = results?.ResultSet?.Row?.collect{"${it.OBJ_ID} ${it.REL_OBJ_ID} ${it.CUST_MODEL_CD} ${it.TYPE_CD}"}
log.info(rowset)
context.testCase.setPropertyValue("RowData", groovy.json.JsonOutput.toJson(rowset))
}
稍后加载数据时,您可以执行以下操作:
List<String> rowset = new groovy.json.JsonSlurper().parseText(context.testCase.getPropertyValue("RowData"))
希望它有所帮助。