Как грамотно почистить базу перед/после автотестов?
Нужен совет от опытных авто тестеров.
(вообще использую pytest)
Обычный пример: Вот простой тест, один из тысячи, "сделать карточку товара" для вэб сайта магазина. Сделал карточку "Носки для тенниса"
Тест упал, перезапускаю его, а уже нельзя имя занято. (удалить карточку через апи или интерфейс нельзя, только заблокировь, вот такой пример)
Как авто тестировщики борються с такими ситуациями, бэкап базы выгружать каждый раз?
Самостоятельно писать sql запрос на удаление записи, а если там много зависимостей?
Подскажите может есть какой-то инструмент или подход для таких ситуаций?
Как оно вообще в боевых ситуациях?
Хотя бы общими словами, я погуглю
Ответы (1 шт):
Есть такие понятия как test setup и test teardown - "подготовка к тестам" и "завершение тестов". Это действия, которые всегда выполняются перед и после собственно самих тестов (или группы тестов), независимо от результатов отдельных тестов. Смысл как раз в том, чтобы удалить из тестовой системы артефакты, которые в ней могут остаться после тестирования. В общем виде это просто две функции; одна автоматически выполняется в самом начале, вторая автоматически в самом конце.
В вашем случае завершение может выглядеть (как я представляю из вашего описани) примерно "если есть карточка (т.е. тест упал и ), то удалить ее, если нет карточки, то удалить". Тогда даже после падения теста карточка будет удалена. Ну или просто перед тестами создавать новую базу, а после - очищать/удалять, не заморачиваясь на проверки.
Для pytest на SO написано довольно много.