2012-03-09 38 views
2

我使用SoapUI 3.6.1。 我需要从响应中提取详细信息并将它们插入下一个请求。 我尝试通过“特性转移”来做到这一点。 在第一次请求中,我收到了一些细节,在回复中我可以看到'Sections'。 这个“部分”可以包含许多“控件”,每个“控件”都有一些值。 我的回答我越来越:从响应到新请求拉细节SoapUI

   ... 
       <a:Section> 
       <a:Controls> 
        <a:Control> 
         <a:Code>11</a:Code> 
         <a:Id>11</a:Id> 
         <a:Label>bkBranded</a:Label> 
         <a:Mandatory>true</a:Mandatory> 
         <a:SortOrder>223</a:SortOrder> 
         <a:Type>RadioButton</a:Type> 
         <a:Values> 
          <a:Value> 
          <a:Code>bkBrandedWindow</a:Code> 
          <a:SortOrder>1</a:SortOrder> 
          <a:Value>Yes</a:Value> 
          </a:Value> 
          <a:Value> 
          <a:Code>bkBrandedWindow</a:Code> 
          <a:SortOrder>2</a:SortOrder> 
          <a:Value>No</a:Value> 
          </a:Value> 
         </a:Values> 
        </a:Control> 
        ... 

主要条件是只得到“控制”,这是强制性的(真实),并只提供“价值”之一。 细节我需要在接下来的请求,得到的是这样的:

... 
<Values> 
<Value> 
    <ControlCode>8003</ControlCode> 
    <Id>8003</Id> 
    <Value>123</Value> 
    <ValueCode>bkBranded</ValueCode> 
</Value> 
    <Value> 
    <ControlCode>455</ControlCode> 
    <Id>455</Id> 
    <Value>1/2</Value> 
    <ValueCode>bkOther</ValueCode> 
</Value> 
.... 

这意味着我需要“代码”,“ID”,“值”,“值码”从响应。 也许有可能使用'If..Else'语句或别的。 在此先感谢。

回答

3
  1. 创建测试用例的新属性,称为ValuesXML
  2. 添加了一步你的原始请求,源数据
  3. 建立财产转移一步
  4. 添加一个新的传输
  5. 选择源为您的回复中的xml
  6. 选中“使用XQuery”复选框
  7. 选择目标作为属性值XMLML
  8. 下方添加到源窗口
  9. 的代码添加与目标要求,您希望您的修改后的数据
  10. 在XML请求,该条款应是,把$ {#的TestCase#ValuesXML}
  11. 一步
  12. GO!

的代码,应在本次产权转让的“源”去

<Values> 
{ 
    for $z in //Control 
    where $z/Mandatory eq "true"  
    return 
     <Value> 
      <ControlCode>{data($z/Code/text())}</ControlCode> 
      <Id>{data($z/Id/text())}</Id> 
      <Value>  
      { 
       let $values := 
       for $x in //Value   
       order by $x/SortOrder 
       return $x/Value 

      return $values[1] 
      } 
      </Value> 
     <ValueCode>{data($z/Label/text())}</ValueCode> 
     </Value> 
} 
</Values> 

注意:您可能需要添加一个“A:”在XQuery表达式的标签名称的前面,以正确读取您的源数据。这还需要你声明“a”命名空间,这很容易通过“声明”按钮完成。

+0

我以为你想要最低的排序顺序值。它需要相当多的XQuery,这不是我的专业领域......另外,我使用Pro版本4.5,因此如果您在SoapUI中遇到问题,请告诉我。 – 2012-03-21 15:30:32