简介:testng是一种常用的自动化框架,适合selenium2的使用;
1、testng的常用注解介绍;
(1)@Test(注解的形式前面必须加@符号,且必须写在将要执行的代码前面进行引入,不用主函数)
该方法是一个测试方法,程序在运行时,会自动默认执行程序中所有的@test方法;
例:
@Test
public void method1(){
System.out.println("test方法");
}
(2)@BeforeMethod与AfterMethod:@BeforeMethod该注脚在测试方法被执行之前会被自动的调用执行;可以被理解成是做初始化的方法,比如执行完一个用例
需要清除cookie就可以把这个方法写在@BeforeMethod注解下面;
AfterMethod是在测试方法被执行之后被自动的调用执行;理解可以参考@BeforeMethod,可以做结束;
(3)@Beforeclass与@Afterclass:@Beforeclass整体的一个初始化注解,一般只执行一次,适合用作浏览器的打开操作;我们就写在这个注解下面;
@Afterclass整体的一个关闭操作的注解,一般只执行一次,适合用作浏览器的关闭;
2、testng的执行驱动介绍
引入:操作与数据进行剥离,比如一个用例@Test实现的是购物功能(操作),这个购物的功能是不会变的,变的是每次来购物的人(数据)是不同的,如果将数据与操作进行剥离,数据驱动可以根据用例条数去多次调用被执行的对象,将会大大提高自动化的执行效率;
实现方式:用@DataProvider注解实现;
编码形式-1:@DataProvider
public Object[][] logindata(){//返回值必须定义为一个二维数据Object[][]这是语法规定;
return new Object[][]{{"a"},{"b"}}}此时@Test需要引用数据源代码如下:
@Test(dataprovider="logindata")
public void method(String info){
System.out.println(info);
}
编码形式-2:@DataProvider
@DataProvider(name="loginoutdata")
public Object[][] logindata(){//返回值必须定义为一个二维数据Object[][]这是语法规定;
return new Object[][]{{"a"},{"b"}}}此时@Test引用的时候,@Test(dataprovider="loginoutdata")即此时是等于数据源的名字,而不是它的方法;
3、testng的运行-testng的XML配置执行;
引入:有的时候一次执行你需要执行多个类,再比如说你有时候一个类中的多个test方法,你想改变执行顺序,或者只想执行其中的几个,再者说你希望执行一个包下面的多个类;此时引入三种配置XML按照类、方法、包的执行方式;
三种方式:按照类class
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" verbose="1" parallel="false" thread-count="1">
<test name="Test1">
<classes>
<class name="com.study.testng.TestngDemo" />
</classes>
</test>
</suite>
TestngDemo是我的类名,执行时换成自己的类名称即可;
按照方法method:
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" verbose="1" parallel="false" thread-count="1">
<test name="Test1">
<classes>
<class name="com.study.testng.TestngDemo" />
<methods>
<include name="test2"/>
<include name="test1"/>
</methods>
</classes>
</test>
</suite>
按照包package:
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" verbose="1" parallel="false" thread-count="1">
<test name="Test1">
<packages>
<package name="com.study.testng" />
</packages>
</test>
</suite>
以上三种方式可以打成架包,放在自己本地,以后采用命令行调用的方式进行启动;