学习研究selenium和TestNG框架有段时间了,觉得两个框架结合起来做web功能自动化测试是件利器。Seleniumn,Testng的优缺点和基础知识再此就不做赘述,google下就可以。
下面介绍如何使用selenium+TestNG做WEB数据驱动测试,希望对正在学习selenium的童鞋有所帮助^_^
我使用的测试网站是在百度上找的一个计算BM网站(http://cn.onlinebmicalculator.com/);
需要用到TestNG的,@DataProvider和@Test这两个注解
1.用@DataProvider注解,定义一个方法来返回集合的参数,这些参数就是我们的测试数据,这些参数会自动传给我们的测试类
代码如下:
2.添加@Test(dataProvider="testData")到类里面,使用TestNg,通过测试数据方法的名(testData),我们可以执行我们希望测试的集合参数。加上此注解@Test(dataProvider=”methond
name”),Testng会自动解析方法中测试数据并输入相应的参数中。
测试结果如下图:
如果有的童鞋不了解testng,要自己去学习下testng的基本知识哦。
假设我们测试数据有很多,如果我们都把他们写在代码里肯定不好维护,那么为了更容易维护我们的测试数据,我们可以把我们的测试数据放入到csv文件中。
下一篇,我将会分享如何使用testNG读取csv文件中的测试数据。
PS:完整代码如下
package com.testng;
import org.testng.Assert;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
public class TestBMI {
private WebDriver driver;
private WebDriverWait wdriver;
@DataProvider
public String[][] testData() {
return new String[][] {
{ "180", "60", "18.5" }, { "180", "70", "21.6" },
{ "170", "65", "22.5" }, { "160", "50", "19.5" }, };
}
// 启动ChromeDriver并打开测试网页
@BeforeTest
public void setUp() {
System.setProperty("webdriver.chrome.driver", "./chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("http://cn.onlinebmicalculator.com/");
}
// 开始数据驱动测试
@Test(dataProvider = "testData")
public void testBMICalculator(String height, String weight,
String expectedBMI) {
// 输入身高
WebElement heightElement = driver.findElement(By
.cssSelector("input[name='f_height']"));
heightElement.clear();
heightElement.sendKeys(height);
// 输入体重
WebElement weightElement = driver.findElement(By
.cssSelector("input[name='f_weight']"));
weightElement.clear();
weightElement.sendKeys(weight);
// 点击计算按钮
WebElement computeElement = driver.findElement(By
.cssSelector("input[name='f_submit']"));
computeElement.click();
// 得到bmi元素的值
WebElement bmiElement = driver
.findElement(By.className("bmi_info")).findElement(
By.tagName("span"));
String actualBMI = bmiElement.getText();
System.out.println("actualBMI:" + actualBMI);
// 断言expectedBMI的值与actualBMI的值相等
Assert.assertEquals(expectedBMI, actualBMI);
}
// 关闭浏览器
@AfterTest
public void tearDown() {
driver.quit();
}
}