Можно использовать параметр TestNG DataProvider И набор тестов?

Кто-нибудь знает, есть ли способ использовать TestNG DataProvider с тестом одновременно с использованием аннотации @Parameter? Наши тестовые наборы имеют некоторую постоянную информацию о конфигурации, которая передается методам тестирования через аннотацию @Parameter. Теперь мы хотели бы использовать DataProvider для запуска этих тестов по набору значений данных.

Я понимаю внутреннюю проблему определения порядка, в котором будут возникать результирующие параметры, но нам нужно, если возможно, эту функцию.

Любые мысли?

В идеальном мире я мог бы сделать что-то вроде этого:

@Test(dataprovider = "dataLoader")
@Parameters("suiteParam")
public void testMethod(String suiteParam, String fromDataParam) {
...
}

Ответ 1

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

private String suiteParam;

@BeforeClass
@Parameter("suiteParam")
public void init(String suiteParam) {
  this.suiteParam = suiteParam;
}

Таким образом вы можете использовать своих поставщиков данных обычным способом и по-прежнему иметь доступ к вашему параметру пакета.

Ответ 2

Да, используя TestNG зависимости от скорости инъекций. Вы можете получить доступ ко всем определенным параметрам в вашем DataProvider. Это пример DataProvider, который нуждается в параметре test_param:

@DataProvider(name = "usesParameter")
public Object[][] provideTestParam(ITestContext context) {
    String testParam = context.getCurrentXmlTest().getParameter("test_param");
    return new Object[][] {{ testParam }};
}

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