Как запустить тестовые случаи параллельно? - PullRequest
1 голос
/ 16 марта 2019

У меня есть один @Test метод, и я получаю имена тестовых случаев из @Dataprovider. Мне нужно запустить тестовые случаи параллельно:

@Test(dataprovider="testdataprodivder")
public void TestExecution(String arg 1)
{
/* Read the testcases from dataprovider and execute it*/
}
@Dataprovider(name="testdataprodivder")
public Object [][]Execution() throws IOException
{
return new Object[][] {{"Developer"},{"Team Lead"},{"QA"},{"Business Analyst"},{"DevOps Eng"},{"PMO"} };
}

Если я хочу запустить тестовые случаи параллельно то есть, если я хочу выполнить «Руководство группы разработчиков», «QA», «Business Analyst», «DevOps Eng», «PMO» параллельно, что мне делать?

5 браузеров - у каждого запущены разные тесты.

TestNG XML:

<suite name="Smoke_Test" parallel="methods" thread-count="5"> 
<test verbose="2" name="Test1">
<classes>
  <class name="Packagename.TestName"/>
</classes>
</test> <!-- Default test -->  
</suite> <!-- Default suite -->

Ответы [ 2 ]

0 голосов
/ 17 марта 2019

Чтобы параллельно запустить управляемый данными тест, необходимо указать parallel=true в @DataProvider. Например:

@Dataprovider(name="testdataprodivder", parallel=true)
public Object [][]Execution() throws IOException
{
return new Object[][] {{"Developer"},{"Team Lead"},{"QA"},{"Business Analyst"},{"DevOps Eng"},{"PMO"} };
}

Чтобы указать количество потоков, используемых в тесте на основе данных, вы можете указать data-provider-thread-count (по умолчанию 10). Например:

<suite name="Smoke_Test" parallel="methods" thread-count="5" data-provider-thread-count="5"> 

ПРИМЕЧАНИЕ : для динамического задания параллельного поведения для теста на основе данных вне кода вы можете использовать расширение QAF-TestNG , где вы можете установить поведение, используя global.datadriven.parallel и <test-case>.parallel свойства для провайдера данных .

0 голосов
/ 17 марта 2019

Ну, во-первых, pubic не является областью применения:) - у вас также есть более неправильный синтаксис. Пробел после вашего Object в вашем поставщике данных не должен быть, подпись функции должна быть

public Object[][] Execution() throws IOException {
     return new Object[][] {{"Developer"},{"Team Lead"},{"QA"},{"Business Analyst"},{"DevOps Eng"},{"PMO"} };
}

Далее, аргумент в вашем методе TestExecution определен неправильно.

public void TestExecution(String arg) {
    // Execute your tests
}

Наконец, вам нужно использовать заглавную букву 'p' в DataProvider всякий раз, когда вы ее используете. Так что это оставляет нас с

@Test(dataProvider="testdataprovider")
public void TestExecution(String arg)
{
/* Read the testcases from dataprovider and execute it*/
}
@DataProvider(name="testdataprovider")
public Object[][] Execution() throws IOException
{
return new Object[][] {{"Developer"},{"Team Lead"},{"QA"},{"Business Analyst"},{"DevOps Eng"},{"PMO"} };
}

На данный момент я не уверен, какие проблемы остаются. Это то, что вы искали? Дайте мне знать, если это поможет или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...