如何将ArrayList值从Script Assertion传输到Groovy Script测试步骤?

时间:2018-03-01 13:50:39

标签: groovy soapui

我从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脚本

1 个答案:

答案 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的类JsonOutputJsonSlurper进行序列化和反序列化的方法:

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"))

希望它有所帮助。