对于自动化测试,数据驱动是必不可少的,本章演示如何实现简单的数据驱动,后续会更新 java+selenium+testNG读取csv实现数据驱动
1、创建 Java Project
创建package和class 名字自取,project如下
2、环境配置
public static WebDriver driver;
@BeforeTest
public void beforeTest() { //测试之前的配置
System.setProperty("webdriver.gecko.driver", "E:/AutoTest/geckodriver.exe");
driver = new FirefoxDriver();
driver.get("http://www.baidu.com");
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
@BeforeMethod
public void beforeMethod() {
}
@AfterMethod
//打算结束后不关闭浏览器,直接在当前页面继续测试
public void afterMethod() {
driver.findElement(By.id("kw")).clear();
}
@AfterTest
public void afterTest() {
driver.quit();
}
3、数据驱动
3.1 创建一个注解为DataProvider的方法
@DataProvider(name = "data")//注解为DataProvider (数据提供者,name=data)
public static Object[][] dataProvider() {//创建一个二维数组,并返回如下的值
return new Object[][] { { "老九门", "演员", "赵丽颖" },
{ "自动化测试", "工具", "selenium " },
{ "功夫", "主演", "周星驰" } };
}
@Test(dataProvider = "data")//测试脚本 定义dataProvider=数据提供者的name
//定义3个String类型的变量 ,数量取决于二维数组
public void testDemo(String data1, String data2, String result) throws InterruptedException {
driver.findElement(By.id("kw")).sendKeys("" + data1 + data2);
driver.findElement(By.id("su")).click();
Thread.sleep(2000);
//断言检测搜索的结果是否与预期result一致
Assert.assertTrue(driver.getPageSource().contains(result));
}
4、完整代码
public class ProviderDemo {
public static WebDriver driver;
@BeforeTest
public void beforeTest() {
System.setProperty("webdriver.gecko.driver", "E:/AutoTest/geckodriver.exe");
driver = new FirefoxDriver();
driver.get("http://www.baidu.com");
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
@BeforeMethod
public void beforeMethod() {
}
@AfterMethod
public void afterMethod() {
driver.findElement(By.id("kw")).clear();
}
@AfterTest
public void afterTest() {
driver.quit();
}
@DataProvider(name = "data")
public static Object[][] dataProvider() {
return new Object[][] {
{ "老九门", "演员", "赵丽颖" },
{ "自动化测试", "工具", "selenium " },
{ "功夫", "主演", "周星驰" } };
}
@Test(dataProvider = "data")
public void testDemo(String data1, String data2, String result) throws InterruptedException {
driver.findElement(By.id("kw")).sendKeys("" + data1 + data2);
driver.findElement(By.id("su")).click();
Thread.sleep(2000);
Assert.assertTrue(driver.getPageSource().contains(result));
}
}