2016-01-07 4 views
1

Я новичок в SoapUI и пытался понять использование отправки XPATH для макетной операции в макетной службе.XPATH Диспетчер в SoapUI Mock service/Mock operation

Вот что я сделал до сих пор

  1. создал макет сервис для калькулятора
  2. Добавлен макет операции вычесть

Ниже приведен пример запроса для операции

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cal="http://www.parasoft.com/wsdl/calculator/"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <cal:subtract> 
     <cal:x>1</cal:x> 
     <cal:y>1</cal:y> 
     </cal:subtract> 
    </soapenv:Body> 
</soapenv:Envelope> 

Ниже приведен образец ответа для того же

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cal="http://www.parasoft.com/wsdl/calculator/"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <cal:subtractResponse> 
     <cal:Result>?</cal:Result> 
     </cal:subtractResponse> 
    </soapenv:Body> 
</soapenv:Envelope> 

Я был в состоянии понять, о других отправки, но не о XPATH следующим образом то, что я вошел в XPATH отправки

declare namespace cal='http://www.parasoft.com/wsdl/calculator/'; 
declare namespace soapenv='http://schemas.xmlsoap.org/soap/envelope/'; 
//cal:subtract/cal:x 

Было также отмечено, что, если я уже использовал SCRIPT отправку и Переход на XPATH из выпадающего списка, сценарий виден в объявлении/скриптовый поле/области

Ниже приведены вопросы:

  1. ли XPATH и SCRIPT диспетчерская же
  2. Если нет, то как же XPATH отправка фактически работать, чтобы определить, какой ответ направить из списка всех форм MockResponses

Пожалуйста, помогите мне с этим.

PS: Я уже прошел через http://www.soapui.org/soap-mocking/reference/mockoperation.html http://www.soapui.org/soap-mocking/mockoperations-and-responses.html

ответ

1

Документация SoapUI, что вы упомянули в своем вопросе является правильным местом для получения информации. Однако доступная информация не является полной.

После того, как вы когда-либо искали, нашли детали.

Первоначально запуталась между Xpath и Script методы доставки.

Вот дополнительная информация, чем то, что вы ищете:

Является XPATH и SCRIPT диспетчерская же

Ответ NO.Оба отличаются

Если нет, то как же XPATH отправка фактически работать, чтобы определить, какой ответ направить из списка всех форм MockResponses

following информации содержится в документации:

XQUERY - Это похоже на QUERY_MATCH, но не так сильно; для входящего запроса применяется выражение XPath, и результирующее значение используется для выбора того, какой MockResponse будет возвращен. В нашем предыдущем примере результатов поиска мы могли бы установить выражение XPath для выбора условия поиска, а затем создать MockResponses с именем после каждого ожидаемого значения. Преимущество состоит в том, что нам не нужно добавлять новые инструкции XPath для новых критериев поиска, просто еще один MockResponse.

Предположим, что вы создали несколько ответов сказать PositiveResponse, NegativeResponse, ZeroResponse для вычтите работы Mock службы.

Вот пример условий, которые вы можете применить по запросу и отправить соответствующий ответ . Конечно, у вас может быть столько, сколько вам нужно.

  1. PositiveResponse - если значения x, y равны 10, 5 соответственно.
  2. NegativeResponse - если значения x, y равны 5, 10 соответственно.
  3. ZeroResponse - в противном случае (это обязательно, если ни одно из указанных выше не удовлетворяет).

Вот как нужно писать в редакторе для данного XPATH режима диспетчерского

declare namespace cal='http://www.parasoft.com/wsdl/calculator/'; 
if (//cal:subtract/cal:x[. = '10'] and //cal:subtract/cal:y[. = '5']) then 
    'PositiveResponse' 
    else 
    if (//cal:subtract/cal:x[. = '5'] and //cal:subtract/cal:y[. = '10']) then 
    'NegativeResponse' 
    else 
    'ZeroResponse' 

Надеется, что вы уже в курсе и дифференцируется режим диспетчерского SCRIPT.

Я думаю, что путаница создан, потому что оба SCRIPT и XPATH показывает редактор одного типа. Но содержание внутри него будет совершенно иным. Также вы можете легко увидеть сообщение над редактором, что log, context, mockRequest доступность переменных, если вы выберете SCRIPT Режим отправки и исчезает, когда XPATH выбран.

Просто давая SCIRPT пример в случае, если вы заинтересованы в нем:

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context) 
def holder = groovyUtils.getXmlHolder(mockRequest.requestContent) 
def x = holder.getNodeValue("//*:x") as int 
def y = holder.getNodeValue("//*:y") as int 
context.result = x - y 

Простой тест может быть (дифференцировать между ними), скопируйте данный скрипт для XPath и попробуйте провести тестирование и мыло неисправность получен сообщение не знаю groovyUtils. Этот тест подтвердит, что xpath и сценарий отличаются.

Здесь вам может не понадобиться создавать несколько ответов, поскольку приведенный выше код может обрабатывать динамические входные значения и задавать result в ответе. MockReponse для вычесть Операция может выглядеть ниже: Место хранения as ${result}.

MOCKRESPONSE для СЦЕНАРИЯ:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cal="http://www.parasoft.com/wsdl/calculator/"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <cal:subtractResponse> 
     <cal:Result>${result}</cal:Result> 
     </cal:subtractResponse> 
    </soapenv:Body> 
</soapenv:Envelope> 

Надеется, что это проясняет.

Смежные вопросы