2012-03-09 41 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