Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Зацикливание тестового сценария или как прогнать один тестовый метод несколько раз в Java + TestNG


(Александр Беликов) #1

Всем привет! Необходимо зациклить 1 тест, чтобы он выполнялся, ну скажем 50 раз. Подскажите, каким образом это организовать? Используемые инструменты: Selenium WD, Java, TestNG, Maven. Заранее спасибо


(Александр Беликов) #2

Разобрался.


(Mykhailo Poliarush) #3

Ну раз уже разобрались и создали этот топик, то тогда выложите свое решение, чтобы другие начинающие могли его увидеть. Спасибо.


(Александр Беликов) #4

Решается аннотацией TestNG - invocationCount.

@Test(threadPoolSize = 3, invocationCount = 10,  timeOut = 10000)
public void testServer() {
     //actions
}

(Funker) #5

Можно копнуть в этом направлении http://testng.org/doc/documentation-main.html#factories

public class TestWebServer {
  @Test(parameters = { "number-of-times" })
  public void accessPage(int numberOfTimes) {
    while (numberOfTimes-- > 0) {
     // access the web page
    }
  }
}

(Дмитрий Бобков) #6

Хм, интересно, а какая есть возможность сделать повтор теста, который упал не по ассерту?


(Sergey Korol) #7

Само по себе зацикливание одного и того же сценария via invocationCount - штука, которая может понадобиться в очень редких случаях. ИМХО, для common тестов она бесполезна.

По факту, подобный процесс характерен при тестировании одного сценария с различными данными. В таком случае нужно использовать DataProvider.

Если же стоит задача перезапуска зафейлившихся тестов, существуют две распространенные техники - подсовывание xml с failed тестами (формируется по окончании прогона), либо при помощи IRetryAnalyzer.

Вы всегда можете скомбинировать ITestListener и IRetryAnalyzer для манипуляции зафейлившимися тестами.