Как заставить работать передачу свойств в тестовом примере SoapUI?

Я пытаюсь передать значение из ответа одного вызова WS на запрос другого, используя TestStep свойства передачи SoapUI.

Первый ответ ВС:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Header/>
  <soapenv:Body>
    <ns5:PSResponse xmlns:ns5="http://www.ab.com/abonline/service/PaymentService/1.0/" xmlns:ns6="http://www.ab.com/abonline/service/CustomerCard/1.0/" xmlns:ns7="https://secure.incab.se/DTServerModuleService/v1">
      <ns5:abTransactionReference>1085-0</ns5:abTransactionReference>
      <ns5:status>0</ns5:status>
    </ns5:PSResponse>
  </soapenv:Body>
</soapenv:Envelope>

Синтаксический анализ свойства работает нормально, используя выражение вроде:
declare namespace ns5="http://www.ab.com/abnline/service/PaymentService/1.0/" //ns5:abTransactionReference

Следующий запрос:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://www.ab.com/abonline/service/PaymentService/1.0/">
  <soapenv:Header/>
  <soapenv:Body>
    <UpdatePaymentRequest>
      <abTransactionReference>30</abTransactionReference>
... ...

Я пытаюсь вставить свойство в следующий запрос, используя:
//abTransactionReference

Дает мне: [Missing match for Target XPath [//abTransactionReference]]

Я также попробовал полный xpath:
declare namespace soapenv="http://schemas.xmlsoap.org/soap/envelope/" //soapenv:Envelope/soapenv:Body/UpdatePaymentRequest/abTransactionReference

... что приводит к аналогичной ошибке.


person DagR    schedule 22.11.2011    source источник


Ответы (3)


кажется, вы также должны установить пространство имен по умолчанию на http://www.ab.com/...

person newtover    schedule 22.11.2011

Вы не можете использовать "" для определения пространства имен. Например, в случае выше >>

declare namespace soapenv="http://schemas.xmlsoap.org/soap/envelope/"

должно быть

declare namespace soapenv='http://schemas.xmlsoap.org/soap/envelope/';
person Venkatesh    schedule 22.02.2012

Попробуйте добавить утверждения XPath в сообщение запроса UpdatePaymentRequest. Нажмите кнопку «Объявить» в диалоговом окне «Конфигурация соответствия XPath», и вы увидите, какой префикс soapUI использует для «http://www.ab.com/abonline/service/PaymentService/1.0/». Думаю будет так:

declare namespace soapenv='http://schemas.xmlsoap.org/soap/envelope/';
declare namespace ns1='http://www.ab.com/abonline/service/PaymentService/1.0/';

(см. http://testautomationnoob.blogspot.com.by/2013/12/xpath-in-soapui-part-1-xpath-assertions.html). Тогда нет необходимости иметь XPath Assertions - вы можете удалить его. Итак, используйте префикс «ns1» в вашем xpath. В итоге у вас будет следующий xpath:

declare namespace soapenv='http://schemas.xmlsoap.org/soap/envelope/';
declare namespace ns1='http://www.ab.com/abonline/service/PaymentService/1.0/';
/soapenv:Envelope/soapenv:Body/ns1:UpdatePaymentRequest/ns1:abTransactionReference
person Alex P.    schedule 09.12.2015
comment
ответы только для ссылок - это не путь SO. Пожалуйста, уточните свой ответ. - person jogo; 09.12.2015