java TestNG
- 软件开发
- 2022-07-25
- 12热度
- 0评论
用TestNG来设计测试用例执行流程
1、编写 testng.xml 文件;
2、设计测试套件
3、设计测试
4、设计
5、设计
testng.xml 文件结构
<?xml version="1.0" encoding="UTF-8" ?>
<!-- 测试套件:一个或多个测试集构成 -->
<suite name="Suite" parallel="false">
<!-- 测试集:多个类构成 -->
<test name="register">
<!-- 测试类集合: -->
<classes>
<!-- 对应的每个测试类:一个或多个方法组成 -->
<class name="com.zhuchun.testtestng.Tester"/>
<class name="com.zhuchun.testtestng.Tester2"/>
</classes>
</test>
</suite>
注解执行顺序
Tester.beforesuite()
Tester.beforetest()
Tester.beforeclass()
Tester.beforemethod()
Tester.test()
Tester.aftermethod()
Tester.afterclass()
Tester.aftertest()
Tester.aftersuite()
常用注解
(配置类型注解)
1、@BeforeSuite、@AfterSuite:在某个测试套件(suite)开始之前/之后运行
2、@BeforeTest、@AfterTest:在某个测试(test)开始之前运行/在某个测试下的所有测试方法执行之后运行
3、@BeforeClass、@AfterClass:在某个测试类开始之前运行/在某个测试类中的所有测试方法执行之后运行
4、@BeforeMethod、@AfterMethod:在某个测试方法之前运行/在某个测试方法执行之后运行
1、@Test 注解:表示是一条测试用例;多条时默认执行顺序是字典顺序
2、@Parameters 注解:可以将在 testng.xml 文件中配置的
3、@DataProvider注解:数据提供者(同时提供多组测试数据),测试方法引用数据提供者时需要指定数据提供者的名字或类名(@Test(dataProvider = "bb")),定义的数据提供者(@DataProvider(name = "aa");@DataProvider(name = "bb"))
4、@Test(dependsOnMethods = {"a2"}):依赖测试,被此定义的测试方法,需要在 a2 方法执行之后才能执行
5、@Test(enabled = false):忽略测试,被此注解的方法被跳过执行
分组测试(只想执行个别或者某一部分的测试用例)
1、测试用例方法指定groups
package com.zhuchun.testtestng;
import org.testng.annotations.Test;
public class GroupDemo {
@Test(groups = {"g1"})
public void a1(){
System.out.println("IgnoreDemo.a1()");
}
@Test
public void a2(){
System.out.println("IgnoreDemo.a2()");
}
@Test(groups = {"g1"})
public void a3(){
System.out.println("IgnoreDemo.a3()");
}
@Test
public void a4(){
System.out.println("IgnoreDemo.a4()");
}
}
2、在testng.xml的test中指定相应测试类
3、在test的groups里面指定run下要执行的分组
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="false">
<test name="register">
<groups>
<run>
<!-- 指定要执行的组 -->
<include name="g1"></include>
</run>
</groups>
<classes>
<class name="com.zhuchun.testtestng.GroupDemo"/>
</classes>
</test>
<parameter name="browserType" value="Chrome"></parameter>
</suite>
4、当测试用例越来越多,有些分组不想执行,设置方式也是一样:在test的groups里面指定run下不需要执行的分组
参数化测试(数据驱动测试)
两种方式想测试方法传递参数
- 利用 testng.xml 定义 parameter
- 利用 DataProviders