1、testng是什么?
TestNG是Java中的一个测试框架
2、testng用来干什么?
即可以用来做单元测试,也可以用来做集成测试。
3、特点
-注解
-TestNG使用Java和面向对象的功能
-支持综合类测试(例如,默认情况下,没有必要创建一个新的测试每个测试方法的类的实例)
-独立的编译时间测试代码运行时配置/数据信息
-灵活的运行时配置
-主要介绍“测试组”。当编译测试,只要问TestNG运行所有的“前端”的测试,或“快”,“慢”,“数据库”等
-支持依赖测试方法,并行测试,负载测试,局部故障
-灵活的插件API
-支持多线程测试
4、测试方法
testng异常测试
TestNG通过@Test(expectedExceptions) 来判断期待的异常, 并且判断Error Message
testng组测试
public class GroupTest {
@Test(groups = {"systemtest"})
public void testLogin(){
System.out.println("this is test login"); }
@Test(groups = {"functiontest"})
public void testOpenPage(){
System.out.println("this is test Open Page");
}
}
然后在testng.xml中 按组执行测试用例
<groups>
<run>
<include name="functiontest" />
</run>
</groups>
testng参数化测试
第一种: testng.xml 方式使代码和测试数据分离,方便维护
@Test
@Parameters("test1")
public void ParaTest(String test1){
System.out.println("This is " + test1);
}
testng.xml中
<parameter name="test1" value="Tank" />
<parameter name="test1" value="Xiao" />
第二种:@DataProvider能够提供比较复杂的参数。 (也叫data-driven testing)
@DataProvider(name="user")
public Object[][] Users(){
return new Object[][]{
{"root","passowrd"},
{"cnblogs.com", "tankxiao"},
{"tank","xiao"}
};
}
@Test(dataProvider="user")
public void verifyUser(String userName, String password){
System.out.println("Username: "+ userName + " Password: "+ password);
}
testng忽略测试
有时候测试用例还没准备好, 可以给测试用例加上@Test(enable = false), 来禁用此测试用例
testng依赖测试
@Test
public void setupEnv(){
System.out.println(“this is setup Env”);
}
@Test(dependsOnMethods = {“setupEnv”})
public void testMessage(){
System.out.println(“this is test message”);
}
testng注释说明
@BeforeSuite - 对于套件测试,在此套件中的所有测试运行之前运行。
@AfterSuite - 对于套件测试,在此套件中的所有测试运行之后运行。
@BeforeTest - 对于套件测试,在运行属于标签内的类的任何测试方法之前运行。
@AfterTest - 对于套件测试,在运行属于标签内的类的所有测试方法都已运行之后运行。
@BeforeGroups:在调用属于该组的第一个测试方法之前运行。
@AfterGroups:在调用属于组的最后一个测试方法之后运行。
@BeforeClass- 在当前类的第一个测试方法之前运行。
@AfterClass - 运行当前类中的所有测试方法之后都运行。
@BeforeMethod - 在每个测试方法之前运行。
@AfterMethod - 在每个测试方法之后运行。
@DataProvider 标志着一个方法,提供数据的一个测试方法。注解的方法必须返回一个Object[] [],其中每个对象[]的测试方法的参数列表中可以分配。该@Test 方法,希望从这个DataProvider的接收数据,需要使用一个dataProvider名称等于这个注解的名字。
@Factory 作为一个工厂,返回TestNG的测试类的对象将被用于标记的方法。该方法必须返回Object[]。
@Listeners 定义一个测试类的监听器。
@Parameters 介绍如何将参数传递给@Test方法。
@Test 标记一个类或方法作为测试的一部分。