Как присвоить значение узла ответа XML на шаге 1 свойству на шаге 2 в soapUI?

У меня есть тестовый шаг soapUI, который создает объект в моей базе данных. XML-ответ, который я получаю, содержит узел, на который мне нужно ссылаться на следующем шаге, а именно мне нужно значение после ключа 'guid'

<flex.messaging.io.amf.ASObject serialization="custom">
  <unserializable-parents/>
  <map>
    <default>
      <loadFactor>0.75</loadFactor>
      <threshold>48</threshold>
    </default>
    <int>64</int>
    <int>28</int>
    <string>key</string>
    <boolean>value</boolean>
    <string>key</string>
    <boolean>value</boolean>
    <string>key</string>
    <string>value</string>
    <string>key</string>
    <boolean>value</boolean>
    <string>key</string>
    <null/>
    <string>key</string>
    <null/>
    <string>key</string>
    <null/>
    <string>key</string>
    <null/>
    <string>key</string>
    <null/>
    <string>key</string>
    <null/>
    <string>key</string>
    <boolean>value</boolean>
    <string>key</string>
    <boolean>value</boolean>
    <string>key</string>
    <null/>
    <string>key</string>
    <string>value</string>
    <string>key</string>
    <string>value</string>
    <string>key</string>
    <object-array/>
    <string>key</string>
    <flex.messaging.io.amf.ASObject serialization="custom">
      <unserializable-parents/>
      <map>
        <default>
          <loadFactor>0.75</loadFactor>
          <threshold>12</threshold>
        </default>
        <int>16</int>
        <int>3</int>
        <string>key</string>
        <boolean>value</boolean>
        <string>key</string>
        <boolean>value</boolean>
        <string>key</string>
        <boolean>value</boolean>
      </map>
      <flex.messaging.io.amf.ASObject>
        <default>
          <inHashCode>false</inHashCode>
          <inToString>false</inToString>
          <namedType>package/class</namedType>
        </default>
      </flex.messaging.io.amf.ASObject>
    </flex.messaging.io.amf.ASObject>
    <string>key</string>
    <string>value</string>
    <string>key</string>
    <boolean>value</boolean>
    <string>key</string>
    <string>value</string>
    <string>key</string>
    <flex.messaging.io.amf.ASObject serialization="custom">
      <unserializable-parents/>
      <map>
        <default>
          <loadFactor>0.75</loadFactor>
          <threshold>12</threshold>
        </default>
        <int>16</int>
        <int>5</int>
        <string>key</string>
        <boolean>value</boolean>
        <string>key</string>
        <boolean>value</boolean>
        <string>key</string>
        <boolean>value</boolean>
        <string>key</string>
        <boolean>value</boolean>
        <string>key</string>
        <boolean>value</boolean>
      </map>
      <flex.messaging.io.amf.ASObject>
        <default>
          <inHashCode>false</inHashCode>
          <inToString>false</inToString>
          <namedType>package/class</namedType>
        </default>
      </flex.messaging.io.amf.ASObject>
    </flex.messaging.io.amf.ASObject>
    <string>guid</string>
    <string>818f40db-c217-46ed-a6a2-7c830d894a95</string>
    <string>key</string>
    <string>value</string>
    <string>key</string>
    <null/>
    <string>key</string>
    <string>value</string>
    <string>key</string>
    <string>value</string>
    <string>key</string>
    <null/>
    <string>key</string>
    <null/>
  </map>
  <flex.messaging.io.amf.ASObject>
    <default>
      <inHashCode>false</inHashCode>
      <inToString>false</inToString>
      <namedType>package/class</namedType>
    </default>
  </flex.messaging.io.amf.ASObject>
</flex.messaging.io.amf.ASObject>

Я видел различные проблемы по этой теме, но, похоже, ни одна из них не работает для меня, я полагаю, что из-за ошибки с моей стороны правильно понять синтаксис, который ожидает soapUI.

Если первый шаг теста называется «stepOne», и мне нужно сослаться на ответ XML в «stepTwo», почему:

def temp = context.expand( '${stepOne#Response//map[1]/string[27]}' );

...не работает. Я предполагаю, что неправильно ссылаюсь на ответ. Я бы даже согласился на способ сослаться на весь ответ на следующем шаге. Затем я мог бы просмотреть его и найти нужное мне значение, используя groovy.

Должен ли я вместо этого пытаться передать собственность? Если это так, источником будет stepOne, а ответом будет ResponseAsXml, целью будет stepTwo, но я действительно не хочу назначать весь xml свойству, я бы хотел назначить ТОЛЬКО нужный мне узел (карта [1]/ строка[27]).

@Sebi- Да, я пробовал это, я просматривал эту страницу бессчетное количество раз. Я могу передать весь ответ во временное свойство уровня TestCase, но я не могу создать код для правильной ссылки на это свойство в окне скрипта... вот что у меня есть сейчас ' def temp = ${#TestCaseName# tempProperty} ', но это не работает. Я хотел бы ввести весь xml, чтобы я мог работать со случаями, когда нужный мне узел не всегда является 27-й «строкой» в «карте». У меня также возникают проблемы с объявлением пространства имен (см. структуру xml). Если вы можете привести реальный пример на основе XML, который я включил для любого из этих методов, я был бы признателен, но я получил все, что мог из учебники по мыльному интерфейсу.


person Jonathan Loiselle    schedule 23.05.2012    source источник


Ответы (1)


Да, вместо этого используйте тестовый шаг передачи собственности!

но я действительно не хочу назначать весь xml свойству, я бы хотел назначить ТОЛЬКО нужный мне узел

Ниже полей выбора источника у вас есть поле ввода. Там вы можете написать выражение XPath узла, который хотите передать.

Хороший учебник можно найти здесь: http://www.soapui.org/Functional-Testing/transfering-property-values.html

person Sebi    schedule 24.05.2012
comment
В итоге я использовал передачу свойства для всего ответа и искал нужные мне значения с помощью скриптов. Я знаю, что это немного не так, но эй, все работает, верно? - person Jonathan Loiselle; 04.06.2012