如何将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的类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"))
希望能帮助到你。
以上是关于如何将ArrayList值从Script Assertion传输到Groovy Script测试步骤?的主要内容,如果未能解决你的问题,请参考以下文章
Firebase/Android:将检索到的值从 Firebase 添加到 arraylist 会返回空指针异常
在java中将Arraylist值从servlet传递到JSP?