testNG注释:
1. @Before和@After 注释
这两个就比较多,一般用于在测试构件上。关于测试构件以后详细介绍,测试构件一般有测试之前的操作和测试运行之后的清除数据的操作。
Before分类有@BeforeSuite,@BeforeTest, @BeforeGroups,@BeforeClass,@BeforeMethod
After分类有@AfterSuite,@ AfterTest, @AfterGroups,@ AfterClass,@ AfterMethod
2. @DataProvider注释
标记一个方法是用来给其他测试方法提供数据的方法。要求该方法必须返回是object[][].
3. @Factory
标记这个方法是一个工厂,方法必须返回的是一个对象。
4. @Listeners
在一个测试方法上定义一个监听。例如Selenium自动化测试中需要用到这个事件监听功能,方便我们输出日志。
5. @Parameters
描述了如何给一个测试方法传提参数。
6. @Test
在@Test下有很多选项可以设置,例如用例之间的依赖关系等。
以下介绍@Parameters
一、数据驱动测试概念
数据驱动测试是相同的测试脚本使用不同的测试数据执行,测试数据和测试行为完全分离。
二、实施数据驱动测试的步骤:
1、编写测试脚本,脚本需要支持程序对象、文件或者数据库读入测试数据。
2、将测试脚本使用的测试数据存入程序对象、文件或者数据库等外部介质中。
3、运行脚本,循环调用存储在外部介质的测试数据。
4、验证所有的测试结果是否符合期望的结果。
三、使用TestNG进行数据驱动
使用@DataProvider注解定义当前方法中的返回对象作为测试脚本的测试数据集。
public class OneTestNG {
private WebDriver driver;
@Test(dataProvider = "searchData")
public void testSearch(String s1, String s2,String res) {
driver.get("http://www.sogou.com");
driver.findElement(By.id("query")).sendKeys(s1+" "+s2);
driver.findElement(By.id("stb")).click();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Assert.assertTrue(driver.getPageSource().contains(res));
}
@DataProvider(name = "searchData")
public Object[][] data() {
return new Object[][] {
new Object[] { "花千骨", "演员","赵丽颖" },
new Object[] { "原生之罪","演员", "翟天临 "},
new Object[] { "三生三世十里桃花","演员", "杨幂 "}
};
}
@BeforeMethod
public void beforeMethod() {
System.setProperty("webdriver.chrome.driver",".\\tools\\chromedriver.exe");
driver=new ChromeDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
}
@AfterMethod
public void afterMethod() {
driver.quit();
}
}