Перейти к содержимому

Фотография

Удаление данных создаваемых тестом


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 dasler

dasler

    Новый участник

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Полянский Александр

Отправлено 27 декабря 2012 - 10:24

Доброго времени суток.
Пишу тесты на WebDriver + Java(Eclipse) + TestNG

Озадачился вопросом удаления данных, создаваемых тестом, после его выполнения/падения.
Тщетно гуглил и искал по этому форуму.

Общая мораль "тест должен чистить за собой" предельно ясна, поэтому наверное и обсуждений по этой теме практически нет.

Но интересует вот что: как конкретно организовать этот процесс? Интересуют общепринятые/общепризнанные шаблоны/подходы.

Сейчас напрашивается примерно следующая организация:

Класс теста имеет структуру:

@BeforeMethod
...

@AfterMethod
...

@Test
...

@Test
...

Я хочу в @AfterMethod удалять сущности, которые создаются в @Test. Возникают следующие вопросы:
1. как проверять а создался ли элемент вообще в ходе выполнения @Test (тест может отвалиться раньше, до создания сущности)
2. как передавать в @AfterMethod значения переменных обозначающих сущности подлежащие удалению, которые по сути появляются только внутри отдельно взятого @Test

Как видится решение:
Автоматизацией начал заниматься недавно, поэтому нет уверенности в правильности выбранных решений.

Подход такой: переменные обозначающие сущности подлежащие удалению инициализируются как public static, что бы они были видны как для @Test, так и для @AfterMethod. При инициализации им присваивается пустое значение: public static String commentId = "";
Затем в @AfterMethod производится проверка "если переменная не пустая, то удалить сущность".

Выглядит это все как-то криво на мой дилетантский взгляд)


Буду очень благодарен любым мыслям/комментариям/наставлениям!!
  • 0

#2 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 28 декабря 2012 - 22:40

Ваш подход имеет место быть, так как он не противоречит здравому смыслу.

Понятное дело, это не единственный возможный вариант. Еще практикуются такие подходы:
1) Создаваемая сущность является уникальной для теста и при создании ее (в начале теста) проверяется существование данного объекта. Если объект уже был, то он перезаписывается. То есть создание/удаление делаются в одном месте

2) Операция удаления предварительно проверяет, а есть ли вообще что удалять. Если нет, то просто происходит выход. Где и как хранить значение - это уже дело десятое. Этот подход полезен тем, что мы оперируем полностью самодостаточными функциями, которые учитывают основные нюансы. В итоге тесты уже не содержат дополнительных проверок, условий, а представляют собой просто последовательность вызовов методов.

3) Создать дамп данных, который заливается перед каждым запуском наборов тестов. В этом случае можно не особо беспокоиться насчет очистки. Но это хорошо работает, если систему можно развернуть локально или есть отдельное окружение, с которым можно работать без вреда остальным
  • 1

#3 dasler

dasler

    Новый участник

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Полянский Александр

Отправлено 03 января 2013 - 12:11

Спасибо за комментарий.

1) Создаваемая сущность является уникальной для теста и при создании ее (в начале теста) проверяется существование данного объекта. Если объект уже был, то он перезаписывается. То есть создание/удаление делаются в одном месте

Я правильно понял, что это вариант решения проблемы, когда в процессе тестирования несколько раз создается сущность описываемая одинаковым набором данных (например пользователь с именем User)? Что бы избежать ошибок на подобие "объект уже существует".
Просто в моем случае нужно именно безвозвратно удалить сущности, которые потом не будут создаваться вновь.
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных