TestNG是开源自动化测试工具,覆盖多类型测试:单元测试,功能测试,集成测试,它的功能非常强大
Testng是一套开源测试框架,是从Junit继承而来,testng意为test next generation
支持多种类型的单元测试(异常测试, 超时测试,依赖测试….)
支持参数化 & 提供了丰富的测试用例组织方式(Suite, Test, Method)
生成测试报告,并支持测试报告扩展(Allure,ReportNG)
TestNG注解
TestNG支持多种注解,可以进行各种组合,如下进行简单的说明:
@BeforeSuite
在该套件的所有测试都运行在注释的方法之前,仅运行一次
@AfterSuite
在该套件的所有测试都运行在注释方法之后,仅运行一次
@BeforeClass
在调用当前类的第一个测试方法之前运行,注释方法仅运行一次
@AfterClass
在调用当前类的第一个测试方法之后运行,注释方法仅运行一次
@BeforeTest
注释的方法将在属于test标签内的类的所有测试方法运行之前运行
@AfterTest
注释的方法将在属于test标签内的类的所有测试方法运行之后运行
@BeforeGroups
配置方法将在之前运行组列表。 此方法保证在调用属于这些组中的任何一个的第一个测试方法之前不久运行
@AfterGroups
此配置方法将在之后运行组列表。该方法保证在调用属于任何这些组的最后一个测试方法之后不久运行
@BeforeMethod
注释方法将在每个测试方法之前运行
@AfterMethod
注释方法将在每个测试方法之后运行
@DataProvider
标记一种方法来提供测试方法的数据。 注释方法必须返回一个Object [] [],其中每个Object []可以被分配给测试方法的参数列表。 要从该DataProvider接收数据的@Test方法需要使用与此注释名称相等的dataProvider名称
@Factory
将一个方法标记为工厂,返回TestNG将被用作测试类的对象。 该方法必须返回Object []
@Listeners
定义测试类上的侦听器
@Parameters
描述如何将参数传递给@Test方法
@Test
将类或方法标记为测试的一部分,此标记若放在类上,则该类所有公共方法都将被作为测试方法
接口测试只需要知道接口协议即可,不需要知道后台语言
suite套件,最大
test
class
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterGroups;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeGroups;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
public class newTest {
@Test(groups="group1")
public void test1() {
System.out.println("test1 from group1");
Assert.assertTrue(true);
}
@Test(groups="group1")
public void test12() {
System.out.println("test12 from group1");
Assert.assertTrue(true);
}
@Test(groups="group2")
public void test2()
{
System.out.println("test2 from group2");
Assert.assertTrue(true);
}
@BeforeTest
public void beforeTest()
{
System.out.println("beforeTest");
}
@AfterTest
public void afterTest()
{
System.out.println("afterTest");
}
@BeforeClass
public void beforeClass()
{
System.out.println("beforeClass");
}
@AfterClass
public void afterClass()
{
System.out.println("afterClass");
}
@BeforeSuite
public void beforeSuite()
{
System.out.println("beforeSuite");
}
@AfterSuite
public void afterSuite()
{
System.out.println("afterSuite");
}
//只对group1有效,即test1和test12
@BeforeGroups(groups="group1")
public void beforeGroups()
{
System.out.println("beforeGroups");
}
//只对group1有效,即test1和test12
@AfterGroups(groups="group1")
public void afterGroups()
{
System.out.println("afterGroups");
}
@BeforeMethod
public void beforeMethod()
{
System.out.println("beforeMethod");
}
@AfterMethod
public void afterMethod()
{
System.out.println("afterMethod");
}
}
依赖测试
@Test(dependsOnMethod = {"方法名称"})
特定顺序测试
@Test(priority = 0/1/2/3/4/…)
跳过测试
@Test(priority = 0/1… , enabled = false)
suite>:套件就是将所有的测试类整理在一块,形成一套测试用例
test>:测试集就是测试类的集合,一般把项目的某一个模块设计成一个测试集
classes>:测试集下的所有测试类
class>:具体测试类,name 属性指定测试类的路径
methods>:测试类下具体的测试方法,如果不写此标签则默认包含测试类下的所有方法