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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将ArrayList值从Script Assertion传输到Groovy Script测试步骤?相关的知识,希望对你有一定的参考价值。

我从XML数据中获取了一系列值,我需要将该值存储在自定义属性中,然后我必须在Groovy脚本中使用它。

当我尝试编写这样的脚本时:

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

我在控制台中收到以下错误:

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)

如何将这些值从Script Assertion传输到Groovy Script?

答案

根据被抛出的异常:

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

希望能帮助到你。

以上是关于如何将ArrayList值从Script Assertion传输到Groovy Script测试步骤?的主要内容,如果未能解决你的问题,请参考以下文章

Firebase/Android:将检索到的值从 Firebase 添加到 arraylist 会返回空指针异常

Java:如何将值从类/bean传递给servlet

在java中将Arraylist值从servlet传递到JSP?

将值从 json 数据存储到 arraylist 并填充视图持有者

将值从 JSP 发送到 servlet

将参数值从字符串转换为日期时间失败