Порядок выполнения тестов в TestNG, "синхронизация" priority и dependsOnMethods

selenium
testng
Теги: #<Tag:0x00007fedbcb88010> #<Tag:0x00007fedb9a4bee8>

(Василь ) #1

Добрый день подскажите как настроить порядок тестов. Использую Selenium, TestNG:
Код следующий:

@Test
public void testing1()
{
System.out.println(“testing1”);
}

@Test (dependsOnMethods=“testing1”)
public void testing2()
{
System.out.println(“testing2”);
}

@Test (dependsOnMethods=“testing1” , priority = 2)
public void testing3()
{
System.out.println(“testing3”);
}

@Test (dependsOnMethods=“testing1” )
public void testing4()
{
System.out.println(“testing4”);
}

@Test (priority = 1)
public void testing5()
{
System.out.println(“testing5”);
}

@Test (dependsOnMethods=“testing5”, priority = 2)
public void testing6()
{
System.out.println(“testing6”);
}

@Test (dependsOnMethods=“testing5”,priority = 1)
public void testing7()
{
System.out.println(“testing7”);
}

Что я получаю:

PASSED: testing1
PASSED: testing5
PASSED: testing2
PASSED: testing4
PASSED: testing7
PASSED: testing3
PASSED: testing6

Что мне надо:
testing1
testing2
testing4
testing3

testing5
testing7
testing6


(Dmitrii Demin) #2

При использовании dependsOnMethods не учитывается priority


(Aleksey Ilyenko) #3

В Вашем случае тесты будут выполняться в нужной последовательности без приоритетов и зависимостей, поскольку TestNG запускает тесты по алфавиту.


(sidelnikovmike) #4

Мой совет - делайте тесты по максимуму независимыми. Тогда не надо будет думать ни над приоритетом, ни над зависимостями.


(Василь ) #5

Спасибо за совет. В общем так и делаю. Но в даном случае без зависимостей не выйдет


(Василь ) #6

Не совсем уверен, тогда я бы получил

PASSED: testing1
PASSED: testing2
PASSED: testing3
PASSED: testing4
PASSED: testing5
PASSED: testing6
PASSED: testing7

а не то что выше


(Nik Sidorenko) #7

А что если просто поставить зависимости в таком порядке как Вам нужно:
testing1
testing2 depends on testing1
testing4 depends on testing2
testing3 depends on testing4

testing5 depends on testing3
testing7 depends on testing5
testing6 depends on testing7

Или просто поставить для всех приоритеты в нужном порядке.


(Aleksey Ilyenko) #8

Ну, в Вашем случае TestNG отрабатывает абсолютно верно. Тесты с зависимостями выполняются после тестов без зависимостей. Если Вам нужен жесткий порядок (один за одним), то нужно использовать один из способов (но не все сразу):

  • priority (увеличивать приоритет с каждым тестом)

  • dependsOnMethods (добавлять зависимость на предыдущий тест, но в этом случае зафейленный тест скипнет следующие)

  • именовать тесты по алфавиту