标签:
先来看个例子:
1 public class day5 { 2 public WebDriver Driver; 3 @BeforeClass 4 //多数会用来做初始化使用 5 public void Bclass() 6 { 7 System.out.println("BeforeClass"); 8 } 9 10 @DataProvider 11 public Object[][] logindata() 12 { 13 return new Object[][]{{"Ain"},{"Bin"}}; 14 } 15 16 @DataProvider(name="logoutdata") 17 public Object[][] logoutinfo() 18 { 19 return new Object[][]{{"Aout"},{"Bout"},{"Cout"}}; 20 } 21 22 23 @BeforeMethod 24 public void setup() 25 { 26 System.out.println("setup"); 27 System.setProperty("webdriver.firefox.bin", "D:/Mozilla Firefox/firefox.exe"); 28 Driver=new FirefoxDriver(); 29 Driver.manage().window().maximize(); 30 Driver.navigate().to("http://www.baidu.com"); 31 } 32 33 @Test(dataProvider="logindata") 34 public void testA(String info) 35 { 36 System.out.println(info); 37 } 38 39 @Test(dataProvider="logoutdata") 40 public void testB(String info) 41 { 42 System.out.println(info); 43 } 44 45 @Test(dataProvider="logindata") 46 public void baidu(String info) 47 { 48 Driver.findElement(By.xpath(".//*[@id=‘kw‘]")).sendKeys(info); 49 } 50 51 @AfterMethod 52 public void teardown() 53 { 54 System.out.println("teardown"); 55 Driver.close(); 56 } 57 58 @AfterClass 59 public void Aclass() 60 { 61 System.out.println("AfterClass"); 62 Driver.quit(); 63 } 64 65 66 }
TestNg常用注解介绍
@Test
? 表示的意义: 1. 示该方法是一个测试方法,在运行时,会自动的运行有@Test注脚的方法
1 @Test 2 public void testA(String info) 3 { 4 System.out.println(info); 5 }
@BeforeMethod/@ AfterMethod
? 表示的意义:
1. beforemethod这个注脚是指加了该注脚的方法在测试方法运行之前会自动的被调用运行
2. aftermethod该注脚的方法在每一个测试方法运行之后会自动的被调用运行
1 @BeforeMethod 2 public void setup() 3 { 4 System.out.println("setup"); 5 System.setProperty("webdriver.firefox.bin", "D:/Mozilla Firefox/firefox.exe"); 6 Driver=new FirefoxDriver(); 7 Driver.manage().window().maximize(); 8 Driver.navigate().to("http://www.baidu.com"); 9 } 10 11 @AfterMethod 12 public void teardown() 13 { 14 System.out.println("teardown"); 15 Driver.close(); 16 }
@BeforeClass/@AfterClass
? 表示的意义:
1. @BeforeClass与@AfterClass,这两个注脚的方法,也就是在每个类运行之前与之后会自动的被调用
? 用处:
1. 在自动化脚本运行时,一个类里面的所有测试方法设计的是在同一个浏览器里面运行,那么就是说在这个类对象产生之 前,就要把浏览器给启动起来,这时候@BeforeClass可以启动浏览器,@AfterClass就可以关闭浏览器了
1 @BeforeClass 2 //多数会用来做初始化使用 3 public void Bclass() 4 { 5 System.out.println("BeforeClass"); 6 } 7 8 9 10 @AfterClass 11 public void Aclass() 12 { 13 System.out.println("AfterClass"); 14 Driver.quit(); 15 }
@BeforeSuite/@AfterSuite /@BeforeTest/@AfterTest
? 用处: 这四个注解是分别用在Suite与Test上的,Suite与Test是定义在XML中的
TestNg数据驱动
? 什么是数据驱动:
1. 数据驱动是指在一个脚本固定的情况下,用数据来控制该脚本是否运行,以及运行的次数,还有每次运行时对应的参数.
? 数据驱动的应用场景:
1. 比如我们在测试登录时,要测试用不同的帐户登录,难道我们需要针对每一个帐户去写一个脚本吗?这样显然是不明智 的,于是,testng为我们提供了这样一个注脚,让我们只需要提供出数据,就可以控制脚本运行的次数及相应的参数.
? 实现方式:
1. 用注解@DataProvider.
1 @DataProvider 2 public Object[][] logindata() 3 { 4 return new Object[][]{{"Ain"},{"Bin"}}; 5 } 6 7 @DataProvider(name="logoutdata") 8 public Object[][] logoutinfo() 9 { 10 return new Object[][]{{"Aout"},{"Bout"},{"Cout"}}; 11 }
1. @DataProvider注脚的方法的返回值是Object对象的二维数组
2. @DataProvider可以指定名称如@DataProvider(name="testData"),这样在测试方法中 @Test(dataProvider="testData"),如果没有跟(name="testData"),则测试方法中的dataProvider的值就应该为 @DataProvider注脚的方法名
TestNg用XML运行
– 以class为基本点
– 以method为基本点
– 以package为基本点
TestNg用例管理
? 用例管理原则—用例独立少依赖
标签:
原文地址:http://www.cnblogs.com/leoliyue/p/4878301.html