TestNG是一个开源自动化测试框架。
优势:支持依赖测试方法,并行测试,负载测试,局部故障,多线程测试,灵活的插件API。
maven依赖
<dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.8.7</version> <scope>test</scope> </dependency>
TestNG常用注解及使用
1. @BeforeSuite 在该套件的所有测试都运行在注释的方法之前,仅运行一次(套件测试是一起运行的多个测试类)。
2. @AfterSuite 在该套件的所有测试都运行在注释方法之后,仅运行一次。
3. @BeforeClass 在调用当前类的第一个测试方法之前运行,注释方法仅运行一次。
4. @AfterClass 在调用当前类的第一个测试方法之后运行,注释方法仅运行一次
5. @BeforeTest 注释的方法将在属于<test>标签内的类的所有测试方法运行之前运行。
6. @AfterTest 注释的方法将在属于<test>标签内的类的所有测试方法运行之后运行。
7. @BeforeGroups 配置方法将在之前运行组列表。 此方法保证在调用属于这些组中的任何一个的第一个测试方法之前不久运行。
8. @AfterGroups 此配置方法将在之后运行组列表。该方法保证在调用属于任何这些组的最后一个测试方法之后不久运行。
9. @BeforeMethod 注释方法将在每个测试方法之前运行。
10. @AfterMethod 注释方法将在每个测试方法之后运行。
11. @Parameters 描述如何将参数传递给@Test方法。
12. @DataProvider 标记一种方法来提供测试方法的数据。 注释方法必须返回一个Object [] [],其中每个Object []可以被分配给测试方法的参数列表。 要从该DataProvider接收数据的@Test方法需要使用与此注释名称相等的dataProvider名称。
public class TestParameter2 {
@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);
}
}
13. @Factory 将一个方法标记为工厂,返回TestNG将被用作测试类的对象。 该方法必须返回Object []。
14. @Listeners 定义测试类上的侦听器。
15. @Test 将类或方法标记为测试的一部分。
BeforeSuite >BeforeTest >BeforeClass >
@Test注解常用参数
1.测试方法是否执行 enable
默认是true,如果设置为false,则在运行时不会执行这个测试方法。
2.预期异常 expectedExeption
@Test(expectedExceptions
= ClassName
.class)
如果抛出了ClassName类异常,测试通过,没有异常算测试不通过;expectedExceptions的值也可以是一个数组:
@Test(expectedExceptions
= {ClassName
.class, ClassName2.class,...
})
3.超时 timeOut
单位为毫秒,如果测试方法运行时间超这个值算测试不通过。
4.
常用的断言
1. assertEqual ([String message], expected value, actual value) 断言两个值相等。值可能是类型有 int, short, long, byte, char or java.lang.Object. 第一个参数是一个可选的字符串消息;
2. assertTrue([String message], boolean condition) 断言一个条件为真;
3. assertFalse([String message],boolean condition) 断言一个条件为假;
4. assertNotNull([String message], java.lang.Object object) 断言一个对象不为空(null);
5. assertNull([String message], java.lang.Object object) 断言一个对象为空(null);
6. assertSame([String message], java.lang.Object expected, java.lang.Object actual) 断言两个对象引用相同的对象;
7. assertNotSame([String message], java.lang.Object unexpected, java.lang.Object actual) 断言两个对象不是引用同一个对象;
8. assertArrayEquals([String message], expectedArray, resultArray) 断言预期数组和结果数组相等。数组的类型可能是 int, long, short, char, byte or java.lang.Object.;