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

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

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

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

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 достаточно хорошо, чтобы выполнять всю работу, упомянутую выше, но подход - это то, что я искал в этом вопросе. Если вы знаете менее сложный способ, пожалуйста, оставьте мне записку!

Другие вопросы по тегам