Откат базы данных после запуска тестов Selenium GUI

Я использую тесты Selenium GUI в веб-приложении Java. Поскольку эти тесты на самом деле являются клиентскими, как мы можем откатить базу данных после выполнения теста?

4 ответа

Решение

То, что вы ищете, называется паттернами разрушения. Так как вам нужно отслеживать все ресурсы, созданные в тесте, и автоматически уничтожать / освобождать их во время Teardown. Я явно не знаю твои рамки, но для этого случая

откат базы данных после запуска теста

хорошим кандидатом является Inline Teardown. Он включает логику разрыва в конце метода испытаний сразу после проверки результата. Вот так:

В последнее время я присутствовал на разговоре о докере. Докладчик создавал док-контейнер с базой данных mysql для демонстрационных целей. Я сразу подумал о том, как использовать это для интеграционного тестирования, так как вы можете создать чистый экземпляр базы данных без особых усилий.

Я искал, если уже есть некоторые лучшие практики и нашел их на веб-сайтах

Я нахожусь в стадии оценки того, как интегрировать это, но я уверен, что это то, что я (и, надеюсь, вы) искал. Рабочий процесс будет:

  1. Тестовое выполнение
  2. Запустить докер контейнер с картинки с пустым
  3. Заполните базу данных основными данными (при необходимости)
  4. Запустить тест
  5. Выбросить докер контейнер

Я предполагаю, что вы не можете "откатить" базу данных, поскольку веб-приложения обычно фиксируют транзакции между запросами.

Вам нужно будет реализовать свой собственный откат. Возможно, вы могли бы создать нового пользователя для каждого теста и удалить любые изменения, сделанные этим пользователем после теста. Или, может быть, вы хотите реализовать шаблон команды.

Вы также можете найти каскадное удаление полезным

Спасибо вам за ваши предложения. Я решил использовать mysqldump для этой цели. В Ant выполните резервное копирование и восстановление тестовой базы данных до и после каждого пакетного теста.

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