Рубрики
Без рубрики

Можем ли мы повторить неудачные тесты с помощью testng? Иретрианализатор

Запуски автоматизации могут завершиться неудачей по бесконечному ряду причин: неудачные тесты, не работающая среда… С тегами тестирование, java, тестирование, селен.

Запуски автоматизации могут завершиться неудачей по бесконечному ряду причин:

  • Слоеные тесты,
  • Рабочая среда не стабильна,
  • Ошибки,
  • Изменения в селекторах,
  • Рамочные проблемы,
  • И так далее, и тому подобное…

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

Если команда хочет повторить неудачные тесты при определенных условиях, различные платформы и языки программирования обычно предлагают различные механизмы, которые могут позволить нам повторно запускать тестовые наборы программно.

Зная, что “Selenium-java” по-прежнему актуален, и многие люди все еще используют такие фреймворки, как тестирование , я хочу затронуть конкретную особенность, которая тестирование предлагает, потому что эта функция была доступна довольно давно, и я до недавнего времени не пользовался ею.

Это довольно просто, все, что нам нужно сделать, это добавить свойство retryAnalyzer в декоратор теста и создать класс, который обрабатывает логику для повторной попытки.

Давайте рассмотрим следующий фрагмент кода в качестве примера:

  1. Сначала мы добавляем свойство.
@Test(retryAnalyzer = DynamicRetryAnalyzer.class)
    public void verifyWidgetOnPage()  {
        runTheTest();
    }
  1. Затем мы создаем класс с логикой для повторения ваших тестов.
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”