Найти в Дзене

Тестирование в SoapUI. Часть 2.

В предыдущей части мы разобрали, как добавлять методы в SoapUI и запустили наш первый тест. В этой статье разберём подробнее возможности SoapUI. В предыдущей статье мы отправили запрос Находим внизу кнопку Assertions и нажимаем её: У нас есть одна проверка, которая была добавлена автоматически при создании шага, и она прошла успешно — зелёная. Теперь давайте добавим проверку на то, что в ответе, в теге <s>, приходит слово throughput. Кликаем Add Assertion: Далее выбираем Property Content → XPath match и нажимаем Add: Откроется окно редактирования Нашей проверки. Теперь важный пункт: необходимо кликнуть на кнопку Declare для добавления namespace. Без него ничего работать не будет! SoapUI добавит пару строк вида: declare namespace soap='http://www.w3.org/2003/05/soap-envelope'; declare namespace ns1='Speller service'; Нас интересует только — ns1 как namespace для сервиса. То есть мы помещаем в ns1 наш ответ. Лучше прописать следующее declare namespace ns1='http://speller.yandex.net/serv
Оглавление

В предыдущей части мы разобрали, как добавлять методы в SoapUI и запустили наш первый тест. В этой статье разберём подробнее возможности SoapUI.

Как добавлять проверки в запросы SoapUI

В предыдущей статье мы отправили запрос

-2

Находим внизу кнопку Assertions и нажимаем её:

-3

У нас есть одна проверка, которая была добавлена автоматически при создании шага, и она прошла успешно — зелёная. Теперь давайте добавим проверку на то, что в ответе, в теге <s>, приходит слово throughput. Кликаем Add Assertion:

Далее выбираем Property Content → XPath match и нажимаем Add:

-4

Откроется окно редактирования Нашей проверки.

Теперь важный пункт: необходимо кликнуть на кнопку Declare для добавления namespace. Без него ничего работать не будет! SoapUI добавит пару строк вида:

declare namespace soap='http://www.w3.org/2003/05/soap-envelope';
declare namespace ns1='Speller service';
-5

Нас интересует только — ns1 как namespace для сервиса. То есть мы помещаем в ns1 наш ответ.

Лучше прописать следующее

declare namespace ns1='http://speller.yandex.net/services/spellservice';

Далее нам нужно прописать путь до нашей переменной. В данном случае синтаксис следующий

//ns1:s

Правила составления самого XPath внутри данного XML-документа точно такие же, как и в HTML. Для получения значения в Expected Result можно кликнуть Select from current:

-6

❗Select from current нужен для того, чтобы проверить верно ли вы прописали путь до нужной переменной.❗

Немного усложним проверки и, например, проверим, что код ошибки — 1. Нужно получить значение атрибута code для тега error. Чтобы получить доступ к атрибуту, его нужно указать в XPath через @:

declare namespace ns1='http://speller.yandex.net/services/spellservice';
//ns1:error/@code

В результате получаем:

-7

Mock-сервер

Благодаря тому, что SOAP имеет чёткий контракт в виде WSDL, можно легко эмулировать сервер. Данная возможность SoapUI позволяет начать писать тесты до того, как реальный сервер станет доступен.

Посмотрим, как проэмулировать сервер Яндекс.Спеллер. Кликаем правой кнопкой по проекту YandexSpeller и выбираем New SOAP MockService, в открывшемся окне указываем название. В общем-то, всё, первоначальная настройка завершена.

-8

Теперь открываем MockService Editor:

-9

И в нём добавляем новую mock-операцию:

-10

Выбираем метод, который хотим эмулировать:

-11

Откроется окно редактирования ответа:

В нём редактируем, заменяя знаки вопроса на текст ответа. Я заменил так

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:spel="http://speller.yandex.net/services/spellservice">
<soap:Header/>
<soap:Body>
<spel:CheckTextResponse>
<spel:SpellResult>
<!--Zero or more repetitions:-->
<spel:error code="1" pos="0" row="0" col="?" len="9">
<spel:word>troughput</spel:word>
<!--Zero or more repetitions:-->
<spel:s>throughput</spel:s>
</spel:error>
</spel:SpellResult>
</spel:CheckTextResponse>
</soap:Body>
</soap:Envelope>
-12

Можем закрыть это окно. Далее возвращаемся в MockService Editor, открываем настройки:

-13

И задаём путь, порт, хост:

-14

Так как я буду тестировать у себя на ПК, то указал localhost.

Далее жмём кнопку Start. Наш сервер запущен.

-15

Далее снова возвращаемся к запросу (который не в тестах), меняем адрес на http://localhost:8080, отправляем запрос и получаем в качестве ответа нашу «заглушку»:

-16

Таким образом можно эмулировать ответы сервера на любой запрос.

Это хороший вариант для тестирования, когда у нас уже есть готовый клиент, который надо протестировать, но пока ещё отсутствует сервер.

Если у вас есть вопросы или вы просто хотите стать частью команды тестировщиков, то переходи в ТГ канал, где можем пообщаться с единомышленниками и найти много интересных и полезных знаний!Также если вам нужна индивидуальная консультация, менторство и помощь в создании проекта пишите в ТГ канал!

Обучение тестированию