Можно ли использовать TestNG DataProvider И параметры набора тестов? - PullRequest
11 голосов
/ 31 марта 2009

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

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

Есть мысли?

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

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

Ответы [ 2 ]

9 голосов
/ 14 июня 2009

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

private String suiteParam;

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

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

2 голосов
/ 17 января 2011

Да, используя Возможности инъекции зависимостей 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 .

...