Идеи о том, как очистить удаленную БД перед запуском тестов на селен - PullRequest
2 голосов
/ 02 марта 2012

У меня есть проект, в котором мы создали набор тестов на селен, используя rspec и capybara, которые запускаются на удаленном сервере.Это означает, что эти тесты не выполняются в том же экземпляре / среде Rails, что и приложение, и, следовательно, не имеют доступа к этим приложениям, которые срабатывают задачи.очистка / восстановление базы данных перед каждым запуском.Мы разворачиваем приложение с помощью задачи сборки Jenkins, а затем, в случае успеха, запускаем тесты на селен.Мы используем Selenium2, и тесты выполняются через SeleniumServer (ранее Selenium Grid).У нас есть возможность запустить задачу Cap, когда мы развертываем приложение для восстановления БД.

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

Некоторые интересные вещи, которые следует отметить о нашей установке: у нас есть немало информации для заполнения, не Gigs этого, но большечем то, что вы хотели бы ввести в исходный файл, и у нас есть полностью секционированная база данных с публичными и приватными схемами.У нас есть мультитенантное приложение, и мы используем частные схемы для изоляции доступа к данным.

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

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

1 Ответ

0 голосов
/ 13 апреля 2012

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

Затем, когда вы хотите запустить полный тест, просто запустите задание очистки и сделайте бутерброд:)

...