您好我设计了一个并行运行的硒测试(25)
@Test(dataProvider = "getData" )
public void multiUserTest(String url, String username, String password)
throws InterruptedException, IOException, FindFailed {
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setBrowserName(prop.getProperty("browserName"));
capabilities.setPlatform(Platform.WINDOWS);
RemoteWebDriver driver = new RemoteWebDriver(new URL(prop.getProperty("url")), capabilities);
WebDriverWait wait = new WebDriverWait(driver, 720); // 12 minutes wait.
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);
try {
driver.get(url);
driver.findElement(By.xpath(prop.getProperty("username"))).sendKeys(username);
driver.findElement(By.xpath(prop.getProperty("password"))).sendKeys(password);
driver.findElement(By.xpath(prop.getProperty("signin"))).click();
}catch (Exception e) {
e.printStackTrace();
}
我的数据提供商
@DataProvider(parallel = true)
public Object[][] getData() {
Object data[][] = new Object[25][3];
// row 1
data[0][0] = "http:XXXX/login.html";
data[0][1] = "XXX1@gmail.com";
data[0][2] = "XX@123";
// row 2
data[1][0] = "http:XXXX/login.html";
data[1][1] = "XXX2@gmail.com";
data[1][2] = "XX@123";
..........
// row 25
data[24][0] = "http:XXXX/login.html";
data[24][1] = "XXX25@gmail.com";
data[24][2] = "XX@123";
我的xml文件是
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="methods" thread-count="1" data-provider-thread-count="25">
<test name="Test">
<classes>
<class name="XXX.MultiUserGuiTest"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
现在,当我运行上面的测试时,它一次运行10次测试,第10次测试完成后,接下来的10次开始执行,然后是5次但是 我想运行我的测试,其中25应该立即开始执行
上方答案 0 :(得分:2)
您好我们已经找到了一种方法可以让我们同时进行25次测试**但我不认为这是一种标准的方法**。请提供您的反馈或更好的方式来做上述情况。
解决方案我们完全删除了数据提供程序,而不是使用数据表单数据提供程序 而是通过使用
将参数形式的testng.xml文件作为参数调用 @Parameters({"param 1","param 2","param 3","and so on"}) in our test
现在我可以看到我的25个节点同时处于活动状态并成功执行所有操作。
答案 1 :(得分:0)
解决问题:
@BeforeClass
public void setupClassName(ITestContext context) {
context.getCurrentXmlTest().getSuite().setDataProviderThreadCount(100);
context.getCurrentXmlTest().getSuite().setPreserveOrder(false);
}