Обновления базы данных, сделанные в TestNG @DataProvider, не откат

52
6

В моих автоматизированных тестах я хочу использовать @DataProvider для 1.) выполнять некоторые обновления базы данных, чтобы гарантировать состояние данных, которые я собираюсь протестировать, и 2.) вернуть тестовые данные, которые будут работать в такой среде.

Я нахожу, что обновления успешно выполняются в теле @DataProvider, тогда обновления, сделанные в моем тесте, успешны, все утверждения проходят, а затем обновления тестирования откатываются назад. Однако обновления @DataProvider НЕ откатятся и остаются после завершения теста.

Есть ли способ откатить обновления базы данных, сделанные внутри тела @DataProvider?

спросил(а) 2017-07-25T02:00:00+03:00 2 года, 8 месяцев назад
1
Решение
71

Вы задаете вопрос simillar Как удалить данные только после того, как все тесты, основанные на входах от поставщика данных, запущены?

Это ответ применим для вас.

ОБНОВИТЬ

В вашем случае @DataProvider - плохой вариант. В TestNG вы можете работать только с результатами, предоставленными @DataProvider и они работают до набора. У вас есть несколько способов решить вашу проблему.

    Создайте прослушиватель, который связывает транзакции БД с соответствующим результатом @DataProvider. Он должен реализовать ITestListener. На каждом этапе завершения теста ваш слушатель будет откатывать требуемые транзакции. Второй вариант, как и первый, но ваш @DataProvider ничего не делает с БД, он просто предоставляет некоторые входы, которые должны обрабатываться @BeforeMehtod и @AfterMethod, обновляться и откатываться соответственно. В этом случае весь ваш контекст может быть сохранен в определенном классе тестирования. Также вы можете создать новую аннотацию, используя принципы, описанные выше, предоставляя и управляя своими бизнес-единицами.

ответил(а) 2017-07-25T08:54:00+03:00 2 года, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема