Запуски автоматизации могут завершиться неудачей по бесконечному ряду причин:
- Слоеные тесты,
- Рабочая среда не стабильна,
- Ошибки,
- Изменения в селекторах,
- Рамочные проблемы,
- И так далее, и тому подобное…
Один из аспектов, который нам определенно необходимо учитывать, – это исследовать первопричины почему проваливаются тестовые случаи, но в этом посте я хочу затронуть другую тему.
Если команда хочет повторить неудачные тесты при определенных условиях, различные платформы и языки программирования обычно предлагают различные механизмы, которые могут позволить нам повторно запускать тестовые наборы программно.
Зная, что “Selenium-java” по-прежнему актуален, и многие люди все еще используют такие фреймворки, как тестирование , я хочу затронуть конкретную особенность, которая тестирование предлагает, потому что эта функция была доступна довольно давно, и я до недавнего времени не пользовался ею.
Это довольно просто, все, что нам нужно сделать, это добавить свойство retryAnalyzer в декоратор теста и создать класс, который обрабатывает логику для повторной попытки.
Давайте рассмотрим следующий фрагмент кода в качестве примера:
- Сначала мы добавляем свойство.
@Test(retryAnalyzer = DynamicRetryAnalyzer.class) public void verifyWidgetOnPage() { runTheTest(); }
- Затем мы создаем класс с логикой для повторения ваших тестов.
import org.testng.IRetryAnalyzer; import org.testng.ITestResult; public class DynamicRetryAnalyzer implements IRetryAnalyzer { int count = 1; int maxRetryCount=2; @Override public boolean retry(ITestResult iTestResult) { if(count
В этом конкретном примере фреймворк повторит неудачный тест еще раз, несмотря ни на что (только в случае сбоя). Пример довольно простой, но, я думаю, мы поняли картину. Если нам нужна какая-либо конкретная логика для оценки того, следует ли нам повторно запускать тест или нет, мы делаем это, изменяя логику внутри метода public boolean retry(itestresult iTestResult) .
Единственное, в чем нам нужно убедиться, это реализовать интерфейс IRetryAnalyzer и переопределить метод retry (itestresult itestresult) с логикой, которую нам нужно оценить, следует ли нам повторно запускать тест или нет.
Я надеюсь, что это кому-нибудь поможет!
” Тест, который проваливается, не всегда неудачный!”
Оригинал: “https://dev.to/gcalvocr/can-we-retry-failed-tests-with-testng-iretryanalyzer-pi7”