Параллельный параметр поставщика данных TestNG отсутствует в аннотации кода

У меня есть тестовый метод TestNG, который запускается с несколькими параметрами с использованием поставщика данных:

@DataProvider()
public Object[][] scenarios() {...}

@Test(dataProvider = "scenarios")
public void check(...) {...}

Иногда мне хочется запустить check тесты параллельно, а иногда нет. Я могу контролировать это, установив аннотацию кода на @DataProvider(parallel = true) или @DataProvider(parallel = false), но я хочу сделать это как параметр времени выполнения, а не как настройку в коде.

Как я могу установить, порождает ли поставщик данных несколько потоков в качестве аргумента командной строки или атрибута в XML-файле пакета TestNG?


person Little Bobby Tables    schedule 24.03.2016    source источник


Ответы (2)


Вам нужны преобразователи аннотаций. С их помощью вы сможете изменить значение parallel в зависимости от вашего собственного бизнес-правила (например: env var).

person juherr    schedule 25.03.2016
comment
Кажется, это работает, не пробовал, но отличные козы, это странный мета-хак для чего-то, что должно быть простым свойством - person Little Bobby Tables; 27.03.2016
comment
Если вы хотите, чтобы это было для всей тестовой кампании, вы можете использовать атрибут data-provider-thread-count на suite узле testng.xml. - person juherr; 27.03.2016

Вы можете попробовать передать ITestContext поставщику данных и получить, например, группы из теста (singleTest или parallelTest). В поставщике данных вернуть только один объект для группы singleTest, этого должно быть достаточно.

person RocketRaccoon    schedule 24.03.2016