章节十六、4-TestNG高级功能--把测试方法分优先级、分组执行
2024-09-01 07:36:00
一、 把测试方法分优先级执行-----》(priority=索引)
1、新建一个testng方法
package testclasses; import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.AfterTest; public class TestNG_Prioritiy { @Test
public void test1() {
System.out.println("在类中排序为第一的test");
} @Test
public void test2() {
System.out.println("在类中排序为第二的test");
} @Test
public void test3() {
System.out.println("在类中排序为第三的test");
} @Test
public void test4() {
System.out.println("在类中排序为第四的test");
} @BeforeClass
public void beforeClass() {
System.out.println("BeforeClass");
} @AfterClass
public void afterClass() {
System.out.println("AfterClass");
}
}
默认的运行顺序为:
3、如果我们需要让test按照我们规定的方法,只需要在备注的test后面加上(priority=?)即可(索引位从0开始)
package testclasses; import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.AfterTest; public class TestNG_Prioritiy { @Test(priority=3)
public void test1() {
System.out.println("在类中排序为第一的test");
} @Test(priority=0)
public void test2() {
System.out.println("在类中排序为第二的test");
} @Test(priority=1)
public void test3() {
System.out.println("在类中排序为第三的test");
} @Test(priority=2)
public void test4() {
System.out.println("在类中排序为第四的test");
} @BeforeClass
public void beforeClass() {
System.out.println("BeforeClass");
} @AfterClass
public void afterClass() {
System.out.println("AfterClass");
}
}
打印结果为:
二、 如何给测试方法分组执行 -----》(groups= {"分组名"})
1、给test方法进行分组
一个test方法可以在多个分组内,格式(groups= {"分组名","分组名"})
package testclasses; import org.testng.annotations.Test;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass; public class TestNG_Grouping { @Test(groups= {"cars","suv"})
public void testBMWx6() {
System.out.println("Running Test - BMW X6");
} @Test(groups= {"cars","sedan"})
public void testAudiA6() {
System.out.println("Running Test - Audi A6");
} @Test(groups= {"bike"})
public void testKawasakiNinja() {
System.out.println("Running Test - Kawasaki Ninja");
} @Test(groups= {"bike"})
public void testHondaCBR() {
System.out.println("Running Test - Honda CBR");
} @BeforeClass
public void beforeClass() {
System.out.println("BeforeClass");
} @AfterClass
public void afterClass() {
System.out.println("AfterClass");
}
}
2、配置xml文件
<!-- 没有此行配置运行时会报错 -->
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="GroupsDemo">
<!-- name中的值表示命名,可随意命名 -->
<test name="Application Test">
<!-- 使测试用例按照我们的分组执行 -->
<groups>
<run>
<!-- name中的赋值需要填写的是我们在类中对test分组的名称 -->
<include name="bike"></include>
</run>
</groups>
<!-- name中的值为需要测试的具体类名,格式:包名.类名 -->
<classes>
<class name="testclasses.TestNG_Grouping"></class>
</classes>
</test>
</suite>
运行结果:
从结果可知,只运行了TestNG_Grouping类中带注解groups=bike的test方法
3、但是,我们也可以从运行结果中得知,带了Beforeclass和afterclass注解的方法没有运行,按常理Beforeclass和afterclass会在类中的test方法执行前后给运行一次,此处没有运行时因为我们对test进行分组时未对class进行分组,如果我想让Beforeclass和afterclass注解的方法一起运行就需要在注解后面加上(alwaysRun=true)
运行结果为:
4、在xml配置文件中,我们不仅可以如上面1、2中演示的那样把test在xml文件中按照groups的名称来单独执行,也可以对groups再进行分组然后一次性执行多个groups。
<!-- 没有此行配置运行时会报错 -->
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="GroupsDemo">
<!-- name中的值表示命名,可随意命名 -->
<test name="Application Test">
<!-- 使测试用例按照我们的分组执行 -->
<groups>
<define name="all">
<include name="suv"></include>
<include name="bike"></include>
<include name="sedan"></include>
</define>
<define name="nobike">
<include name="suv"></include>
<include name="sedan"></include>
</define>
<run>
<!-- name中的赋值需要填写的是我们在类中对test分组的名称或者是xml文件中define标签的name名称 -->
<include name="nobike"></include>
</run>
</groups>
<!-- name中的值为需要测试的具体类名,格式:包名.类名 -->
<classes>
<class name="testclasses.TestNG_Grouping"></class>
</classes>
</test>
</suite>
运行结果为:
如果有不明白的小伙伴可以加群“555191854”问我,群里都是软件行业的小伙伴相互一起学习。
内容具有连惯性,未标注的地方可以看前面的博客,这是一整套关于ava+selenium自动化的内容,从java基础开始。
欢迎关注,转载请注明来源。
最新文章
- 修改Centos 6.5的yum源
- NET 自带IOC容器MEF指初体验
- WinForm------GridControl控件中使用SearchLookUpEdit控件的方法
- switch多分支语句简析
- 7,SFDC 管理员篇 - 数据模型 - 公式和验证 1
- animation of android (2)
- R 分类进行数值处理
- Flask 与 Celery 在 windows 下的集成问题
- Js运算符优先级
- C#多线程同步
- [Codechef October Challenge 2014]刷漆
- [转载]opencv MSER
- ajax返回json数组遍历添加到html
- C#通过生成ini文件,记住用户关闭程序之前的选择+忽略跨线程检查
- Unix/Linux环境C编程新手教程(24) MySQL 5.7.4 for Red Hat Enterprise 7(RHEL7)的安装
- 学习笔记TF059:自然语言处理、智能聊天机器人
- 给外行或者刚入门普及一下关于C#,.NET Framework(.NET框架),.Net,CLR,ASP,ASP.Net, VS,以及.NET Core的概念
- 爬取博主所有文章并保存到本地(.txt版)--python3.6
- Oracle UTL_HTTP(收集汇总有用资料)
- 【webpack系列】从零搭建 webpack4+react 脚手架(四)