一、 把测试方法分优先级执行-----》(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基础开始。

欢迎关注,转载请注明来源。

最新文章

  1. 修改Centos 6.5的yum源
  2. NET 自带IOC容器MEF指初体验
  3. WinForm------GridControl控件中使用SearchLookUpEdit控件的方法
  4. switch多分支语句简析
  5. 7,SFDC 管理员篇 - 数据模型 - 公式和验证 1
  6. animation of android (2)
  7. R 分类进行数值处理
  8. Flask 与 Celery 在 windows 下的集成问题
  9. Js运算符优先级
  10. C#多线程同步
  11. [Codechef October Challenge 2014]刷漆
  12. [转载]opencv MSER
  13. ajax返回json数组遍历添加到html
  14. C#通过生成ini文件,记住用户关闭程序之前的选择+忽略跨线程检查
  15. Unix/Linux环境C编程新手教程(24) MySQL 5.7.4 for Red Hat Enterprise 7(RHEL7)的安装
  16. 学习笔记TF059:自然语言处理、智能聊天机器人
  17. 给外行或者刚入门普及一下关于C#,.NET Framework(.NET框架),.Net,CLR,ASP,ASP.Net, VS,以及.NET Core的概念
  18. 爬取博主所有文章并保存到本地(.txt版)--python3.6
  19. Oracle UTL_HTTP(收集汇总有用资料)
  20. 【webpack系列】从零搭建 webpack4+react 脚手架(四)

热门文章

  1. Git设置忽略文件
  2. TensorFlow笔记-文件读取
  3. Linux C 网络编程——多线程的聊天室实现(服务器端)
  4. net core 序列化与反序列化与遇到的几个坑
  5. java练习---6
  6. 重复造轮子系列——基于FastReport设计打印模板实现桌面端WPF套打和商超POS高度自适应小票打印
  7. 第三章、Go-内建容器
  8. Mysql无法启动情况下,如何恢复数据?
  9. Leetcode的SQL题解:185. 部门工资前三高的员工
  10. webgl核心要素