在SOAP UI中使用groovy脚本在数据源中插入值的问题

在SOAP UI中使用groovy脚本在数据源中插入值的问题,groovy,soapui,Groovy,Soapui,我尝试使用soapui中的groovy将值插入到数据存储中 问题是它只在数据存储中插入一行 import groovy.json.JsonSlurper def utils = new com.eviware.soapui.support.GroovyUtils( context ); def project = testRunner.testCase.testSuite.project ; def tcase = project.testSuites["MyTestSuite"].testCa

我尝试使用soapui中的groovy将值插入到数据存储中

问题是它只在数据存储中插入一行

import groovy.json.JsonSlurper
def utils = new com.eviware.soapui.support.GroovyUtils( context );
def project = testRunner.testCase.testSuite.project ;
def tcase = project.testSuites["MyTestSuite"].testCases["MyTestCase"] ; 
def tstep = tcase.getTestStepByName("GetShops");
def JSONresponse = tstep.getPropertyValue("response");
def slurper = new JsonSlurper()
def jsonElements = slurper.parseText(JSONresponse)

for ( value in jsonElements.shopId ) {
    log.info value
     result["IDS"] = value
}
尽管日志显示多个值,但只有最后一个值被插入到数据存储ID列中


这里我遗漏了什么?

我猜
结果
是一个
映射
或一些类似映射的对象,因此每次迭代都会通过循环

for ( value in jsonElements.shopId ) {
    log.info value
    result["IDS"] = value
}

替换存储在此映射中“IDS”键下的值

函数返回
parseText
。执行
log.info
查看json的实际外观。当您使用
jsonElements.shopId时,您得到的将是地图。你应该以地图的形式访问它

尝试下面的代码来循环json响应

import groovy.json.JsonSlurper

def jsonResp = context.expand('${CitiesJSON - Request 1#Response}') 

def jsonElements = new JsonSlurper().parseText(jsonResp)

for ( value in jsonElements.geonames ) {
    value.each{
            log.info "${it.key}:${it.value}"
    }
}
我使用了和
CitiesJSON-Request 1
是我的rest测试请求的名称

/*This code returns the below data
Thu Apr 10 17:29:50 ADT 2014:INFO:fcodeName:capital of a political entity
Thu Apr 10 17:29:50 ADT 2014:INFO:toponymName:Mexico City
Thu Apr 10 17:29:50 ADT 2014:INFO:countrycode:MX
Thu Apr 10 17:29:50 ADT 2014:INFO:fcl:P
Thu Apr 10 17:29:50 ADT 2014:INFO:fclName:city, village,...
Thu Apr 10 17:29:50 ADT 2014:INFO:name:Mexico City
Thu Apr 10 17:29:50 ADT 2014:INFO:wikipedia:en.wikipedia.org/wiki/Mexico_City
Thu Apr 10 17:29:50 ADT 2014:INFO:lng:-99.12766456604
Thu Apr 10 17:29:50 ADT 2014:INFO:fcode:PPLC
Thu Apr 10 17:29:50 ADT 2014:INFO:geonameId:3530597
Thu Apr 10 17:29:50 ADT 2014:INFO:lat:19.428472427036
Thu Apr 10 17:29:50 ADT 2014:INFO:population:12294193
Thu Apr 10 17:29:50 ADT 2014:INFO:fcodeName:capital of a political entity
Thu Apr 10 17:29:50 ADT 2014:INFO:toponymName:Manila
Thu Apr 10 17:29:50 ADT 2014:INFO:countrycode:PH
Thu Apr 10 17:29:50 ADT 2014:INFO:fcl:P
Thu Apr 10 17:29:50 ADT 2014:INFO:fclName:city, village,...
Thu Apr 10 17:29:50 ADT 2014:INFO:name:City of Manila
Thu Apr 10 17:29:50 ADT 2014:INFO:wikipedia:en.wikipedia.org/wiki/Manila
Thu Apr 10 17:29:50 ADT 2014:INFO:lng:120.9822
Thu Apr 10 17:29:50 ADT 2014:INFO:fcode:PPLC
Thu Apr 10 17:29:50 ADT 2014:INFO:geonameId:1701668
Thu Apr 10 17:29:50 ADT 2014:INFO:lat:14.6042
Thu Apr 10 17:29:50 ADT 2014:INFO:population:10444527
Thu Apr 10 17:29:50 ADT 2014:INFO:fcodeName:capital of a political entity
Thu Apr 10 17:29:50 ADT 2014:INFO:toponymName:Dhaka
Thu Apr 10 17:29:50 ADT 2014:INFO:countrycode:BD
Thu Apr 10 17:29:50 ADT 2014:INFO:fcl:P
Thu Apr 10 17:29:50 ADT 2014:INFO:fclName:city, village,...
Thu Apr 10 17:29:50 ADT 2014:INFO:name:Dhaka
Thu Apr 10 17:29:50 ADT 2014:INFO:wikipedia:en.wikipedia.org/wiki/Dhaka
Thu Apr 10 17:29:50 ADT 2014:INFO:lng:90.40743827819824
Thu Apr 10 17:29:50 ADT 2014:INFO:fcode:PPLC
Thu Apr 10 17:29:50 ADT 2014:INFO:geonameId:1185241
Thu Apr 10 17:29:50 ADT 2014:INFO:lat:23.710395616597037
Thu Apr 10 17:29:50 ADT 2014:INFO:population:10356500
Thu Apr 10 17:29:50 ADT 2014:INFO:fcodeName:capital of a political entity
Thu Apr 10 17:29:50 ADT 2014:INFO:toponymName:Seoul
Thu Apr 10 17:29:50 ADT 2014:INFO:countrycode:KR
Thu Apr 10 17:29:50 ADT 2014:INFO:fcl:P
Thu Apr 10 17:29:50 ADT 2014:INFO:fclName:city, village,...
Thu Apr 10 17:29:50 ADT 2014:INFO:name:Seoul
Thu Apr 10 17:29:50 ADT 2014:INFO:wikipedia:en.wikipedia.org/wiki/Seoul
Thu Apr 10 17:29:50 ADT 2014:INFO:lng:126.9784
Thu Apr 10 17:29:50 ADT 2014:INFO:fcode:PPLC
Thu Apr 10 17:29:50 ADT 2014:INFO:geonameId:1835848
Thu Apr 10 17:29:50 ADT 2014:INFO:lat:37.566
Thu Apr 10 17:29:50 ADT 2014:INFO:population:10349312
Thu Apr 10 17:29:50 ADT 2014:INFO:fcodeName:capital of a political entity
Thu Apr 10 17:29:50 ADT 2014:INFO:toponymName:Jakarta
Thu Apr 10 17:29:50 ADT 2014:INFO:countrycode:ID
Thu Apr 10 17:29:50 ADT 2014:INFO:fcl:P
Thu Apr 10 17:29:50 ADT 2014:INFO:fclName:city, village,...
Thu Apr 10 17:29:50 ADT 2014:INFO:name:Jakarta
Thu Apr 10 17:29:50 ADT 2014:INFO:wikipedia:en.wikipedia.org/wiki/Jakarta
Thu Apr 10 17:29:50 ADT 2014:INFO:lng:106.84513092041016
Thu Apr 10 17:29:50 ADT 2014:INFO:fcode:PPLC
Thu Apr 10 17:29:50 ADT 2014:INFO:geonameId:1642911
Thu Apr 10 17:29:50 ADT 2014:INFO:lat:-6.214623197035775
Thu Apr 10 17:29:50 ADT 2014:INFO:population:8540121
Thu Apr 10 17:29:50 ADT 2014:INFO:fcodeName:capital of a political entity
Thu Apr 10 17:29:50 ADT 2014:INFO:toponymName:Tokyo
Thu Apr 10 17:29:50 ADT 2014:INFO:countrycode:JP
Thu Apr 10 17:29:50 ADT 2014:INFO:fcl:P
Thu Apr 10 17:29:50 ADT 2014:INFO:fclName:city, village,...
Thu Apr 10 17:29:50 ADT 2014:INFO:name:Tokyo
Thu Apr 10 17:29:50 ADT 2014:INFO:wikipedia:en.wikipedia.org/wiki/Tokyo
Thu Apr 10 17:29:50 ADT 2014:INFO:lng:139.69171
Thu Apr 10 17:29:50 ADT 2014:INFO:fcode:PPLC
Thu Apr 10 17:29:50 ADT 2014:INFO:geonameId:1850147
Thu Apr 10 17:29:50 ADT 2014:INFO:lat:35.6895
Thu Apr 10 17:29:50 ADT 2014:INFO:population:8336599
Thu Apr 10 17:29:50 ADT 2014:INFO:fcodeName:capital of a political entity
Thu Apr 10 17:29:50 ADT 2014:INFO:toponymName:Taipei
Thu Apr 10 17:29:50 ADT 2014:INFO:countrycode:TW
Thu Apr 10 17:29:50 ADT 2014:INFO:fcl:P
Thu Apr 10 17:29:50 ADT 2014:INFO:fclName:city, village,...
Thu Apr 10 17:29:50 ADT 2014:INFO:name:Taipei
Thu Apr 10 17:29:50 ADT 2014:INFO:wikipedia:en.wikipedia.org/wiki/Taipei
Thu Apr 10 17:29:50 ADT 2014:INFO:lng:121.531846
Thu Apr 10 17:29:50 ADT 2014:INFO:fcode:PPLC
Thu Apr 10 17:29:50 ADT 2014:INFO:geonameId:1668341
Thu Apr 10 17:29:50 ADT 2014:INFO:lat:25.047763
Thu Apr 10 17:29:50 ADT 2014:INFO:population:7871900
Thu Apr 10 17:29:50 ADT 2014:INFO:fcodeName:capital of a political entity
Thu Apr 10 17:29:50 ADT 2014:INFO:toponymName:Bogotá
Thu Apr 10 17:29:50 ADT 2014:INFO:countrycode:CO
Thu Apr 10 17:29:50 ADT 2014:INFO:fcl:P
Thu Apr 10 17:29:50 ADT 2014:INFO:fclName:city, village,...
Thu Apr 10 17:29:50 ADT 2014:INFO:name:Bogotá
Thu Apr 10 17:29:50 ADT 2014:INFO:wikipedia:en.wikipedia.org/wiki/Bogot%C3%A1
Thu Apr 10 17:29:50 ADT 2014:INFO:lng:-74.08175468444824
Thu Apr 10 17:29:50 ADT 2014:INFO:fcode:PPLC
Thu Apr 10 17:29:50 ADT 2014:INFO:geonameId:3688689
Thu Apr 10 17:29:50 ADT 2014:INFO:lat:4.609705849789108
Thu Apr 10 17:29:50 ADT 2014:INFO:population:7674366
Thu Apr 10 17:29:50 ADT 2014:INFO:fcodeName:capital of a political entity
Thu Apr 10 17:29:50 ADT 2014:INFO:toponymName:Beijing
Thu Apr 10 17:29:50 ADT 2014:INFO:countrycode:CN
Thu Apr 10 17:29:50 ADT 2014:INFO:fcl:P
Thu Apr 10 17:29:50 ADT 2014:INFO:fclName:city, village,...
Thu Apr 10 17:29:50 ADT 2014:INFO:name:Beijing
Thu Apr 10 17:29:50 ADT 2014:INFO:wikipedia:en.wikipedia.org/wiki/Beijing
Thu Apr 10 17:29:50 ADT 2014:INFO:lng:116.397228240967
Thu Apr 10 17:29:50 ADT 2014:INFO:fcode:PPLC
Thu Apr 10 17:29:50 ADT 2014:INFO:geonameId:1816670
Thu Apr 10 17:29:50 ADT 2014:INFO:lat:39.9074977414405
Thu Apr 10 17:29:50 ADT 2014:INFO:population:7480601
Thu Apr 10 17:29:50 ADT 2014:INFO:fcodeName:capital of a political entity
Thu Apr 10 17:29:50 ADT 2014:INFO:toponymName:Hong Kong
Thu Apr 10 17:29:50 ADT 2014:INFO:countrycode:HK
Thu Apr 10 17:29:50 ADT 2014:INFO:fcl:P
Thu Apr 10 17:29:50 ADT 2014:INFO:fclName:city, village,...
Thu Apr 10 17:29:50 ADT 2014:INFO:name:Hong Kong
Thu Apr 10 17:29:50 ADT 2014:INFO:wikipedia:en.wikipedia.org/wiki/Hong_Kong
Thu Apr 10 17:29:50 ADT 2014:INFO:lng:114.157691001892
Thu Apr 10 17:29:50 ADT 2014:INFO:fcode:PPLC
Thu Apr 10 17:29:50 ADT 2014:INFO:geonameId:1819729
Thu Apr 10 17:29:50 ADT 2014:INFO:lat:22.2855225817732
Thu Apr 10 17:29:50 ADT 2014:INFO:population:7012738
*/
如果您想访问单个数据集,您可能可以尝试以下方法

for ( value in jsonElements.geonames ) {
    log.info value["name"]
}

/*this returns
Thu Apr 10 17:33:41 ADT 2014:INFO:Mexico City
Thu Apr 10 17:33:41 ADT 2014:INFO:City of Manila
Thu Apr 10 17:33:41 ADT 2014:INFO:Dhaka
Thu Apr 10 17:33:41 ADT 2014:INFO:Seoul
Thu Apr 10 17:33:41 ADT 2014:INFO:Jakarta
Thu Apr 10 17:33:41 ADT 2014:INFO:Tokyo
Thu Apr 10 17:33:41 ADT 2014:INFO:Taipei
Thu Apr 10 17:33:41 ADT 2014:INFO:Bogotá
Thu Apr 10 17:33:41 ADT 2014:INFO:Beijing
Thu Apr 10 17:33:41 ADT 2014:INFO:Hong Kong
*/

你说的数据存储是什么意思?另外,您知道可以通过使代码更具groovy性来缩短代码。

在我看来,您希望存储在属性步骤类型中,您可以执行以下操作

def idsObjectStored = context.expand( '${Properties#ids}' )
def slurper = new JsonSlurper()
idsObjectStored = slurper.parseText(idsObjectStored)


for ( value in jsonElements.shopId ) {
    log.info value
    idsObjectStored.add(value)
}
在此属性中创建一个条目,即idsObjectStored,初始内容为[]。 jsonSlurper将在对象中转换它

idsObjectStored = slurper.parseText(idsObjectStored)
现在您只需迭代并添加所有这些值