Как грамотно почистить базу перед/после автотестов?

Рейтинг: 2Ответов: 1Опубликовано: 21.04.2023

Нужен совет от опытных авто тестеров.

(вообще использую pytest)

Обычный пример: Вот простой тест, один из тысячи, "сделать карточку товара" для вэб сайта магазина. Сделал карточку "Носки для тенниса"

Тест упал, перезапускаю его, а уже нельзя имя занято. (удалить карточку через апи или интерфейс нельзя, только заблокировь, вот такой пример)

Как авто тестировщики борються с такими ситуациями, бэкап базы выгружать каждый раз?

Самостоятельно писать sql запрос на удаление записи, а если там много зависимостей?

Подскажите может есть какой-то инструмент или подход для таких ситуаций?

Как оно вообще в боевых ситуациях?

Хотя бы общими словами, я погуглю

Ответы

▲ 3

Есть такие понятия как test setup и test teardown - "подготовка к тестам" и "завершение тестов". Это действия, которые всегда выполняются перед и после собственно самих тестов (или группы тестов), независимо от результатов отдельных тестов. Смысл как раз в том, чтобы удалить из тестовой системы артефакты, которые в ней могут остаться после тестирования. В общем виде это просто две функции; одна автоматически выполняется в самом начале, вторая автоматически в самом конце.

В вашем случае завершение может выглядеть (как я представляю из вашего описани) примерно "если есть карточка (т.е. тест упал и ), то удалить ее, если нет карточки, то удалить". Тогда даже после падения теста карточка будет удалена. Ну или просто перед тестами создавать новую базу, а после - очищать/удалять, не заморачиваясь на проверки.

Для pytest на SO написано довольно много.