您好,Ganve,请教个问题: SoapUI获取接口返回的数据,找到匹配的字段值,将该值作为参数传给另一个用例

如:创建一个新车辆品牌,数据库中会对该品牌随机生成一个uuid,为了获取这个uuid,需要通过查询接口去获取所有的品牌信息列表(列表中包含该uuid对应的字段),找到(不太确定怎样去匹配)这个品牌对应的uuid,然后将这个uuid传送到另一个测试用例作为参数:返回值如下,比如想获取大众品牌对应的uuid,该怎样操作:
<Response xmlns="http://172.28.4.220/carbrands">
<entries>
<e>
<content>
<brandId>JH001</brandId>
<description>江淮汽车是一家综合型汽车大厂商</description>
<modelCount>4</modelCount>
<name>江淮</name>
<uuid>ff80818147a921a20147c2ec2ea30001</uuid>
</content>
</e>
<e>
<content>
<brandId>DZ002</brandId>
<description>德国最大的汽车生产集团,世界四大汽车生产商之一</description>
<modelCount>2</modelCount>
<name>大众</name>
<uuid>ff80818147a921a20147c2f70b960002</uuid>
</content>
</e>
<e>
<content>
<brandId>FT003</brandId>
<description>丰田是全世界排名第一的汽车生产公司</description>
<modelCount>2</modelCount>
<name>丰田</name>
<uuid>ff80818147a921a20147c2f951bf0003</uuid>
</content>
</e>
<e>
<content>
<brandId>FT004</brandId>
<description>福特一家生产汽车的跨国企业,于美国密歇根州迪尔伯恩所创立</description>
<modelCount>2</modelCount>
<name>福特</name>
<uuid>ff80818147a921a20147c2fa4ebb0004</uuid>
</content>
</e>
</entries>
</Response>

加个Groovy 脚本。。把UUID写到TestCase的属性里面去。下一个测试用例直接获右键取属性值就可以了

脚本简单帮你简单写了下,你可以参考下,。你可以根据实际情况调整下。

import com.eviware.soapui.support.XmlHolder
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
//TestTest是你上面获取信息的那个request的名字,我随便取的
def holder = groovyUtils.getXmlHolder('TestTest#Response')
def UUID = null
//--------------Get OA Cars-----------------------
def Cars = holder.getDomNodes("//*:Response/*:entries/*:e/*:content")
for(Car in Cars){
def subCar = new XmlHolder(Car)
def CarName = subCar.getNodeValue("/*:content/*:name")
def CarID = subCar.getNodeValue("/*:content/*:uuid")
if (CarName =='大众'){
testRunner.testCase.setPropertyValue( "UUID","$CarID" )
}
}追问

感谢Ganve的耐心解答,这个错误是不是需要先声明什么呀?方便加个好友么?846700408

来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
相似回答