2010-06-10 47 views
0

我的问题是关于将数据元素(来自groovy脚本)放在SoapUI中的响应中。 我有一组数据,我想提出我的响应(在不同的标签/元素)如何将复杂的数据类型从Groovy脚本添加到SoapUI中的响应中


我知道把一个简单的元素像这样的:

元素“

<ns:MyName>${MyName}</ns:MyName> 

从Groovy脚本由

context.setProperty("MyName" , "My name") 
映射: 在XML响应MYNAME

现在的问题:

我的XML响应如下所示:

<soapenv:Body> 
    <ns:GetDataSummaryResponse> 
    <!--Optional:--> 
    <ns:GetDataSummaryResult> 
     <ns:DataSummary> 
      <!--Zero or more repetitions:--> 
      <ns:DataSummaryResponseDetail> 
       <ns:Name>?</ns:Name> 
       <!--Optional:--> 
       <ns:DataProgress> 
       <!--Optional:--> 
       <From>?</From> 
       <!--Optional:--> 
       <Procent>?</Procent> 
       <!--Optional:--> 
       <To>?</To> 
       <!--Optional:--> 

在Groovy我已经建立了其充满数据例如这样的数据数组:

context:[DataSummary:[DataSummaryResponseDetail:[Name:My name, DataProgress:[From:some text, **Procent:some value**, To:some text]]] 

在响应中我可以看到${DataSummary}的整个值,但是如何获取元素“Pro分

我可能错了如何建立我的上下文数据,但随时调整!

回答

1

我设法做了很多搜索。 首先,我需要在元素前面使用“=”才能获得像 $ {= DataSummary [0]} 这样的句柄。这适用于我之前显示的数据的顶层。

但要真正解决我在Groovy中创建的类像这样的问题:

代码:选择所有 类DataSummaryResponseDetail { 公共字符串名称 公共DataProgress DataProgress =新DataProgress() 公共值[]值=新值[2] } 类DataProgress { 公共日期从 公共日期要 公共浮Procent } 类价值{ 公共字符串货币 公众诠释金额 }

def hsrd = new DataSummaryResponseDetail() 
hsrd.name = 'Some name' 
hsrd.value[0]=new Value() 
hsrd.value[0].Amount = 1000 
hsrd.value[0].Currency = 'SEK' 
hsrd.totalValue.Amount = 2000 
hsrd.totalValue.Currency = 'USD' 

,然后在响应XML。我指的是这样 $元件{hsrd.value [0] .Amount} $ {= hsrd.totalValue.Amount}

DEF hsrd =新DataSummaryResponseDetail() hsrd.name = '某些名称' hsrd .value [0] =新值() hsrd.value [0] .Amount = 1000 hsrd.value [0] .Currency ='SEK' hsrd.totalValue.Amount = 2000 hsrd.totalValue.Currency =' USD'

问题已解决。如果您知道更好的方法,请告诉我。

0

我还没有了SoapUI工作,但你尝试过这样的:

${DataSummary.DataSummaryResponseDetail.DataProgress.Procent} 

如果DataSummary是一个数组,你可以访问使用

${DataSummary[0].DataSummaryResponseDetail.DataProgress.Procent} 

您可以遍历的第一项数组使用方法each(),所以

${DataSummary.each { it.DataSummaryResponseDetail.DataProgress.Procent }} 

会让你所有的条目。

+0

不! 由于DataSummary和其他许多东西一样都是“数组”,我需要一种方法来声明我感兴趣的索引。 – SeeU 2010-06-10 14:29:54

+0

感谢您的回复。我的名字,DataProgress:[From:some text,Procent:some value,To:我的名字,DataProgress:[DataSummary:[DataSummaryResponseDetail:[DataSummaryResponseDetail:[Name:一些文字]]]“也作为字符串。 我已经尝试过更简单的变体,但我没有回过头。 $ {DataSummary [0] .DataSummaryResponseDetail [0] .Name} $ {DataSummaryResponseDetail [0] .Name} 如果我使用“$ {DataSummary}”,则返回整个字符串。它是否有任何与XPATH有关的事情来实现我需要的数据? 我需要以另一种方式构建我的Context(DataSummary)吗? – SeeU 2010-06-11 07:06:16

相关问题