Можно использовать параметр 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.