【发布时间】:2020-08-18 21:54:33
【问题描述】:
我想为 10 个用户运行登录测试。用户凭据保存在 Excel 工作表中。因此,我不想逐行运行此测试,而是一次运行 3 个,这意味着前 3 行将启动 3 个专用 chrome 浏览器,然后再运行 3 个,然后只有 1 个。
但问题是,浏览器也会从不同的行中挑选数据。
为了克服这个问题我尝试在测试方法中使用synchronized关键字,但是浏览器没有并行打开,它们按顺序打开,执行测试并退出。
我该如何解决这个问题?我希望每一行都有一个专用的 chrome 浏览器。
public class DemoParallelTesting{
WebDriver wdriver;
@BeforeMethod
public synchronized void parallelDemo() throws Exception {
// public void parallelDemo() throws Exception {
wdriver = new ChromeDriver();
wdriver.get("https://www.baseURL.com");
}
@Test(dataProvider = "loginData")
public void Registration_data(String testcasename, String sUserName, String sPassword) throws Exception {
// Do login
}
@DataProvider(name = "loginData", parallel = true)
public Object[][] getData() {
String filepath= System.getProperty("user.dir") + "/src/test/resources/testData/" + "loginData.xlsx";
Object data[][] = testData(filepath, "Sheet1");
return data;
}
public Object[][] testData(String filepath, String sheetName) {
// read excel file
return data;
}
testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Suite" data-provider-thread-count="3">
<test name="DemoTest" parallel="methods">
<classes>
<class name="rough.DemoParallelTesting"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
【问题讨论】:
-
您是否尝试过在测试中声明和初始化本地
WebDriver对象?
标签: java selenium testng testng-dataprovider