К сожалению, в бесплатной версии нормальных циклов, только кастрированный Conditional Goto, который можно представить циклом do...while(condition)
В части первой о нем и напишу, затем планируется написание цикла типа for c использованием Groovy.
Итак, постановка задачи.
Дано:
некий сервис сообщений осуществляющий отправку сообщения, получение статуса сообщения. Все сообщения имеют статусы INWORK, DONE, ERROR. После отправки сообщения, ему присваивается статус INWORK, затем DONE. В случае ошибки обработки сообщения возвращается статус ERROR.
Извратимся и будем записывать возникающие статусы в проперти тест-кейса status.
Т.к. тест-кейс может запускаться вручную несколько раз, необходимо каждый раз сбрасывать значение property status.
Решение:
1. открываем свойства TestCase и пишем SetupScript:
2. Создаем Request для метода отправки сообщения
3. Создаем Request для метода проверки статуса сообщения.
4. Передаем идентификатор сообщения из Response метода sendMessage в Request метода getMessage при помощи Property Transfer.
5. Добавляем шаг Groovy Script, где будем записывать получившиеся статусы в Property status тест-кейса, для это парсим Response getMessage одним из двух способов (способов гораздо больше, описал пока 2).
Например,
6. Добавляем шаг Conditional Goto.
- Добавляем Новое состояние, назовем его status.
- Пишем, с помощью XPath Condition, что в случае, если статус равен INWORK, то повторяем шаг getMessage, иначе останавливаем цикл:
- Указываем шаг getMessage в поле Target Step
Вставляем Delay там где необходимо. Делаем проверки результатов теста. Цикл готов.
В части первой о нем и напишу, затем планируется написание цикла типа for c использованием Groovy.
Итак, постановка задачи.
Дано:
некий сервис сообщений осуществляющий отправку сообщения, получение статуса сообщения. Все сообщения имеют статусы INWORK, DONE, ERROR. После отправки сообщения, ему присваивается статус INWORK, затем DONE. В случае ошибки обработки сообщения возвращается статус ERROR.
Извратимся и будем записывать возникающие статусы в проперти тест-кейса status.
Т.к. тест-кейс может запускаться вручную несколько раз, необходимо каждый раз сбрасывать значение property status.
Решение:
1. открываем свойства TestCase и пишем SetupScript:
testRunner.testCase.setProperty('status', '')
2. Создаем Request для метода отправки сообщения
3. Создаем Request для метода проверки статуса сообщения.
4. Передаем идентификатор сообщения из Response метода sendMessage в Request метода getMessage при помощи Property Transfer.
5. Добавляем шаг Groovy Script, где будем записывать получившиеся статусы в Property status тест-кейса, для это парсим Response getMessage одним из двух способов (способов гораздо больше, описал пока 2).
Например,
import com.eviware.soapui.support.XmlHolder; def soapRequest = testRunner.testCase.getTestStepByName("getMessage"); def responseValue = soapRequest.getProperty('Response').getValue(); def parcedResponse = new XmlParser().parseText(responseValue); def tc = testRunner.testCase;
def tcProperty = testRunner.testCase.getPropertyValue('status') if (tcProperty.equals('')) tc.setPropertyValue('status', parcedResponse.depthFirst().grep{it.@status}.'@status'[0]);
else{ StringBuffer sb = new StringBuffer(); sb.append(tcProperty); sb.append(', '); sb.append(parcedResponse.depthFirst().grep{it.@status}.'@status'[0]); tc.setPropertyValue('status',sb.toString()); }
6. Добавляем шаг Conditional Goto.
- Добавляем Новое состояние, назовем его status.
- Пишем, с помощью XPath Condition, что в случае, если статус равен INWORK, то повторяем шаг getMessage, иначе останавливаем цикл:
declare namespace ns4='http://example/NS4'; //ns4:Message/@status = 'INWORK'
- Указываем шаг getMessage в поле Target Step
Вставляем Delay там где необходимо. Делаем проверки результатов теста. Цикл готов.
Комментариев нет:
Отправить комментарий