Выполнение заводного кода на последнем шаге текущего тестового примера в модульной структуре без сценария разрыва

У меня есть структура soapui, которая является модульной. Это означает, что я могу выполнять тестовые случаи на основе бизнес-операций, которые организованы в разные наборы. Имея это в виду, мне понадобятся данные из других тестовых случаев для использования в моем текущем тестовом примере (который находится в другом наборе). Для этого я использую шаг Run TestCase в своем текущем тестовом наборе, который запускает тестовый пример в наборе 1 и переносит необходимые данные в мой текущий тестовый набор (набор 2) через свойства проекта. После того, как я запустил текущий тестовый пример, мне нужно очистить свойства проекта. У меня есть отличный код для этого. Вот проблема: поскольку это модульная система, мне нужно очищать свойства проекта ТОЛЬКО после запуска ТЕКУЩЕГО теста. Использование сценария разрыва на уровне тестового примера не работает, потому что он всегда будет очищать свойства проекта, ДАЖЕ ЕСЛИ это не текущий выполняемый тестовый пример. Это означает, что мой текущий пакет — набор 2. И все тестовые примеры в наборе 2 имеют сценарий разрыва, который удаляет свойства проекта. Когда я запускаю тестовый пример в наборе 3 и мне нужны данные из тестового набора в наборе 2, свойства не будут представлены из-за сценариев разрыва, найденных в наборе 2 (на уровне тестового набора). Опять же, мне нужно, чтобы он очищался только тогда, когда последний шаг выполняется из текущего тестового примера, но не влияет на другие тестовые примеры при выполнении модульного выполнения. Я надеюсь, что в этом есть смысл.

В качестве примечания, эта структура позволяет мне тестировать бизнес-операции по пакетам для специального тестирования. Это также позволяет мне запустить полную регрессию от начала до конца (тестирование всех наборов подряд). Мне нужно решение, чтобы не испортить полный регрессионный запуск.

Есть идеи, как это сделать?


person Grant Edwards    schedule 06.08.2015    source источник


Ответы (1)


Для этого мне пришлось создать сценарий установки и демонтажа на каждом уровне: Project, Suite и Test Case.

В сценарии установки я создал переменную с именем Is_Running. Затем я создаю оператор if, который говорит: Если «Is_Running» имеет значение NULL, то заполните эту переменную именем проекта, пакета или тестового примера, который выполняется в данный момент. Например, если я выполняю на уровне проекта, этот код сначала проверяет, есть ли что-нибудь в контейнере Is_running, и если нет, то записывает имя проекта в эту переменную.

Затем я использую сценарий разрыва на каждом уровне, который говорит, что если переменная Is_Running равна текущему имени того уровня, на котором я работаю, то удаляются свойства проекта. Это гарантирует, что свойства проекта будут удалены только после завершения выполнения текущего уровня, а не в середине теста (при использовании других наборов).

Например: если я начну тестирование на уровне пакета и выберу запуск «Suite3», сценарий установки запишет «Suite3» в переменной Is_Running. Как только Suite3 привлекает Suite2 для запуска необходимых тестовых случаев, сценарий установки Suite2 видит, что переменная Is_Running не равна нулю, поэтому он НЕ записывает свое имя в контейнер Is_Running. Таким образом, сценарий демонтажа Suite2 не стирает свойства проекта, поскольку имя не совпадает. После того, как Suite3 завершит все этапы тестирования, сценарий разрыва видит, что Is_Running заполнен Suite3, поэтому он удаляет свойства проекта.

Этот подход позволяет мне запускать проект на любом уровне и удалять свойства проекта только после завершения работы текущего пакета. Мне нужно было знать groovy достаточно хорошо, чтобы выполнить всю работу, упомянутую выше, но подход — это то, что я искал в этом вопросе. Если вы знаете менее сложный способ, пожалуйста, оставьте мне примечание!

person Grant Edwards    schedule 19.08.2015