1.介绍
TestNG是一个设计用来简化广泛的测试需求的Java测试框架,从单元测试(隔离测试一个类)到集成测试,自动生成测试报告。
2.使用
使用IDEA创建Maven工程,并在pom.xml中添加:
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
</dependency>
</dependencies>
3.基本注解
注解 | 描述 |
---|---|
@Test | 标记一个类或方法作为测试的一部分 |
@BeforeMethod | 被注释的方法将在每一个测试方法调用前运行 |
@AfterMethod | 被注释的方法将在每一个测试方法调用后运行 |
@BeforeClass | 在调用当前类的第一个测试方法之前运行,仅运行一次 |
@AfterClass | 在调用当前类的最后一个测试方法之后运行,仅运行一次 |
@BeforeTest | 将会在所有的测试方法执行之前运行 |
@AfterTest | 将会在所有的测试方法执行之后运行 |
@BeforeSuite | 在该套件的所有测试都运行在注释的方法之前,仅运行一次 |
@AfterSuite | 在该套件的所有测试都运行在注释方法之后,仅运行一次 |
@BeforeGroups | 配置方法将在之前运行组列表。 在调用属于这些组中的任何一个的第一个测试方法之前不久运行。 |
@AfterGroups | 此配置方法将在之后运行组列表。在调用属于任何这些组的最后一个测试方法之后不久运行。 |
@DataProvider | 标记一个方法用于为测试方法提供数据。 被注释的方法必须返回Object[][] ,其中每个Object[] 可以指派为这个测试方法的参数列表 |
@Parameters | 传递参数给@Test方法 |
注意:必须掌握注解的执行顺序
- Before开头的注解,一般用于初始化环境、 准备测试环境(初始化、数据准备等)
- After开头的注解,一般用于执行测试的环境清理工作(退出、关闭资源等)
举个例子,假设要测试微信功能:1.语音通话 2.视频通话
步骤:
手机解锁 @BeforeSuite
打开微信 @BeforeTest
打开好友聊天界面 @BeforeClass
邀请通话 @BeforeMethod //会执行2次,邀请语音,邀请视频
语音通话 @Test
视频通话 @Test
挂断通话 @AfterMethod //会执行2次,挂断语音,挂断视频
回到微信主屏(退出聊天界面) @AfterClass
关闭微信 @AfterTest
手机锁屏 @AfterSuite
4.测试套件
测试套件是为了测试软件程序的行为或一系列行为, 是一个集合。
在TestNG中, 使用xml文件来进行测试套件的配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="套件名">
<test name="测试名">
<classes>
<class name="com.testng" />
</classes>
</test>
</suite>
常用标签层级关系:
|-- suite //只能一个,name必填
|-- test //可以多个,name必填
|-- classes
|-- class
|-- methods
|-- groups
|-- run
|-- include
|-- exclude
|-- packages
|-- package
5.分组测试
5.1方法分组
@Test(groups = "apple")
public void apple1(){
System.out.println("拿第1个苹果");
}
@Test(groups = "apple")
public void apple2(){
System.out.println("拿第2个苹果");
}
@Test
public void banana(){
System.out.println("拿香蕉");
}
@BeforeGroups("apple")
public void beforeApple(){
System.out.println("拿苹果之前运行");
}
@AfterGroups("apple")
public void afterApple()