t.me/atinfo_chat Telegram группа по автоматизации тестирования

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

Теги: #<Tag:0x00007f7488fc46e0> #<Tag:0x00007f7488fc4618>

Добрый день подскажите как настроить порядок тестов. Использую 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

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

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

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

1 Симпатия

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

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

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

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

А что если просто поставить зависимости в таком порядке как Вам нужно:
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

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

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

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

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

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