Доброго времени суток.
Пишу тесты на WebDriver + Java(Eclipse) + TestNG
Озадачился вопросом удаления данных, создаваемых тестом, после его выполнения/падения.
Тщетно гуглил и искал по этому форуму.
Общая мораль "тест должен чистить за собой" предельно ясна, поэтому наверное и обсуждений по этой теме практически нет.
Но интересует вот что: как конкретно организовать этот процесс? Интересуют общепринятые/общепризнанные шаблоны/подходы.
Сейчас напрашивается примерно следующая организация:
Класс теста имеет структуру:
@BeforeMethod
...
@AfterMethod
...
@Test
...
@Test
...
Я хочу в @AfterMethod удалять сущности, которые создаются в @Test. Возникают следующие вопросы:
1. как проверять а создался ли элемент вообще в ходе выполнения @Test (тест может отвалиться раньше, до создания сущности)
2. как передавать в @AfterMethod значения переменных обозначающих сущности подлежащие удалению, которые по сути появляются только внутри отдельно взятого @Test
Как видится решение:
Автоматизацией начал заниматься недавно, поэтому нет уверенности в правильности выбранных решений.
Подход такой: переменные обозначающие сущности подлежащие удалению инициализируются как public static, что бы они были видны как для @Test, так и для @AfterMethod. При инициализации им присваивается пустое значение: public static String commentId = "";
Затем в @AfterMethod производится проверка "если переменная не пустая, то удалить сущность".
Выглядит это все как-то криво на мой дилетантский взгляд)
Буду очень благодарен любым мыслям/комментариям/наставлениям!!
Удаление данных создаваемых тестом
Автор dasler, 27 дек 2012 10:24
Сообщений в теме: 2
#1
Отправлено 27 декабря 2012 - 10:24
#2
Отправлено 28 декабря 2012 - 22:40
Ваш подход имеет место быть, так как он не противоречит здравому смыслу.
Понятное дело, это не единственный возможный вариант. Еще практикуются такие подходы:
1) Создаваемая сущность является уникальной для теста и при создании ее (в начале теста) проверяется существование данного объекта. Если объект уже был, то он перезаписывается. То есть создание/удаление делаются в одном месте
2) Операция удаления предварительно проверяет, а есть ли вообще что удалять. Если нет, то просто происходит выход. Где и как хранить значение - это уже дело десятое. Этот подход полезен тем, что мы оперируем полностью самодостаточными функциями, которые учитывают основные нюансы. В итоге тесты уже не содержат дополнительных проверок, условий, а представляют собой просто последовательность вызовов методов.
3) Создать дамп данных, который заливается перед каждым запуском наборов тестов. В этом случае можно не особо беспокоиться насчет очистки. Но это хорошо работает, если систему можно развернуть локально или есть отдельное окружение, с которым можно работать без вреда остальным
Понятное дело, это не единственный возможный вариант. Еще практикуются такие подходы:
1) Создаваемая сущность является уникальной для теста и при создании ее (в начале теста) проверяется существование данного объекта. Если объект уже был, то он перезаписывается. То есть создание/удаление делаются в одном месте
2) Операция удаления предварительно проверяет, а есть ли вообще что удалять. Если нет, то просто происходит выход. Где и как хранить значение - это уже дело десятое. Этот подход полезен тем, что мы оперируем полностью самодостаточными функциями, которые учитывают основные нюансы. В итоге тесты уже не содержат дополнительных проверок, условий, а представляют собой просто последовательность вызовов методов.
3) Создать дамп данных, который заливается перед каждым запуском наборов тестов. В этом случае можно не особо беспокоиться насчет очистки. Но это хорошо работает, если систему можно развернуть локально или есть отдельное окружение, с которым можно работать без вреда остальным
#3
Отправлено 03 января 2013 - 12:11
Спасибо за комментарий.
Просто в моем случае нужно именно безвозвратно удалить сущности, которые потом не будут создаваться вновь.
Я правильно понял, что это вариант решения проблемы, когда в процессе тестирования несколько раз создается сущность описываемая одинаковым набором данных (например пользователь с именем User)? Что бы избежать ошибок на подобие "объект уже существует".1) Создаваемая сущность является уникальной для теста и при создании ее (в начале теста) проверяется существование данного объекта. Если объект уже был, то он перезаписывается. То есть создание/удаление делаются в одном месте
Просто в моем случае нужно именно безвозвратно удалить сущности, которые потом не будут создаваться вновь.
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных