我有一个@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”,“业务分析师”,“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 -->
为了并行运行数据驱动的测试,您需要在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 extension,您可以使用global.datadriven.parallel
和<test-case>.parallel
properties for data-provider设置行为。
好吧,有一件事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
}
最后,无论何时使用它,你都必须将DataProvider
中的'p'大写。所以这让我们失望了
@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"} };
}
此时我不确定还有什么问题。这是你想要的东西吗?如果这有或没有帮助,请告诉我。