有几个不同测试组的测试。而且我正在尝试通过在内部使用带有 ITestContext 的@DataProvider 来使用不同的数据集运行它们中的每一个。我得到 NullPointerException。这是我的代码:
String url = "http://google.com";
FirefoxDriver driver = new FirefoxDriver();
@BeforeTest(groups={"A","B"})
public void launchOfBrowser(){
driver.get(url);
}
@Test(dataProvider="Search", groups="A")
public void searchByUser(String author, String key) throws InterruptedException{
System.out.println("Welcome " + author + ", your search value is: " + key);
String enteredValue;
driver.findElement(By.name("q")).sendKeys(key);
Thread.sleep(3000);
enteredValue = driver.findElement(By.name("q")).getAttribute("value");
Assert.assertEquals(enteredValue, key);
driver.findElement(By.name("q")).clear();
}
@Test(dataProvider="Search", groups="B")
public void searchByIncognito(String key) throws InterruptedException{
System.out.println("Your search value is: " + key);
String enteredValue;
driver.findElement(By.name("q")).sendKeys(key);
Thread.sleep(3000);
enteredValue = driver.findElement(By.name("q")).getAttribute("value");
Assert.assertEquals(enteredValue, key);
driver.findElement(By.name("q")).clear();
}
@AfterTest(groups={"A","B"})
public void closeSessions(){
driver.quit();
}
@DataProvider(name="Search")
public static Object[][] getDataFromDataprovider(ITestContext c){
Object[][] groupArray = null;
for(String group : c.getIncludedGroups()){
if (group.equalsIgnoreCase("A")){
groupArray = new Object[][] {
{ "Guru99", "India" },
{ "Krishna", "UK" },
{ "Bhupesh", "USA" }
};
}
else{
groupArray = new Object[][] {
{ "India" },
{ "UK" },
{ "USA" }
};
}
}
return groupArray;
}