1.简介

  今天主要是讲解和分享:TestNG中一个类中有多个测试方法的时候,多个测试方法的执行顺序或者依赖关系的问题。如果不用dependsOnMethods,testNG会自动根据@Test方法名称的首字母排序来执行测试方法。但是有时,我们可能需要以特定顺序调用测试用例中的方法,或者可能希望在方法之间共享一些数据和状态。 TestNG支持这种依赖关系,因为它支持在测试方法之间显式依赖的声明。

2.TestNG允许指定依赖关系

①在@Test注释中使用属性dependsOnMethods

②在@Test注释中使用属性dependsOnGroups。

在TestNG中,我们使用dependOnMethods和dependsOnGroups来实现依赖测试。 如果依赖方法失败,则将跳过所有后续测试方法。

3.dependOnMethods

通过方法名给出测试方法的依赖关系。一个简单的例子,“test1()”依赖“test4()”。

正常的测试用例顺序应该是test1>test2>test3>test4,这里在test1写了依赖关系为test4,所以此时运行后的结果是如图中test4>test2>test3>test1。

3.1代码设计

3.2参考代码

package library;

import org.testng.annotations.Test;

/**
* @author 北京-宏哥
*
* @公众号:北京宏哥
*
* 《手把手教你》系列基础篇(七十七)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试(详解教程)
*
* 2022年3月03日
*/ public class TestDepend { @Test(dependsOnMethods = {"test4"})
public void test1() { System.out.println("test1");
} @Test
public void test2() { System.out.println("test2");
} @Test
public void test3() { System.out.println("test3");
} @Test
public void test4() { System.out.println("test4");
}
}

3.3运行代码

1.运行代码,右键Run AS->TestNG Suite,控制台输出,如下图所示:

3.4依赖关系的规则

从上边的运行结果可以看出依赖关系的规则是:

① 优先被依赖关系方法

② 没有依赖关系的

③ 需要依赖关系的

3.5依赖方法失败

1.如果test4()失败,则将跳过test1()

2.参考代码

package library;

import org.testng.annotations.Test;

/**
* @author 北京-宏哥
*
* @公众号:北京宏哥
*
* 《手把手教你》系列基础篇(七十七)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试(详解教程)
*
* 2022年3月03日
*/ public class TestDepend { @Test(dependsOnMethods = {"test4"})
public void test1() { System.out.println("test1");
} @Test
public void test2() { System.out.println("test2");
} @Test
public void test3() { System.out.println("test3");
} @Test
public void test4() { System.out.println("test4");
throw new RuntimeException(); }
}

3.运行代码,右键Run AS->TestNG Suite,控制台输出,如下图所示:

4.dependsOnGroups

以组名方式测试依赖方法。对于多个被依赖的测试方法,可以通过方法名直接给出(dependsOnMethods = {"test2","test3"}),也可以通过组名给出被依赖的测试方法。

组名添加:@Test(groups={“组名称”})

@Test(dependsOnGroups=“组名”)

注:方法名时用的是{};

4.1代码设计

4.2参考代码

package library;

import org.testng.annotations.Test;

/**
* @author 北京-宏哥
*
* @公众号:北京宏哥
*
* 《手把手教你》系列基础篇(七十七)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试(详解教程)
*
* 2022年3月03日
*/ public class TestDepend { @Test
public void test() { System.out.println("test");
} @Test(dependsOnGroups = "T23")
public void test1() { System.out.println("test1");
} @Test(groups = {"T23"})
public void test2() { System.out.println("test2");
} @Test(groups = {"T23"})
public void test3() { System.out.println("test3");
} }

4.3运行代码

1.运行代码,右键Run AS->TestNG Suite,控制台输出,如下图所示:

5.小结

好了,时间也不早了,今天就分享和讲解到这里,希望对您有所帮助,感谢您耐心地阅读!

《手把手教你》系列基础篇(七十七)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试- 上篇(详解教程)的更多相关文章

  1. 《手把手教你》系列基础篇(八十三)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-下篇(详解教程)

    1.简介 其实前边好像简单的提到过测试报告,宏哥觉得这部分比较重要,就着重讲解和介绍一下.报告是任何测试执行中最重要的部分,因为它可以帮助用户了解测试执行的结果.失败点和失败原因.另一方面,日志记录对 ...

  2. 《手把手教你》系列基础篇(七十八)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试- 中篇(详解教程)

    1.简介 上一篇讲解了依赖测试的各种方法,今天继续讲解依赖测试的方法,这一篇主要是讲解和分享通过xml文件配置组名依赖方法( 主要是测试组的用法).废话不说,直接上干货. 2.实例 测试组:一个组可包 ...

  3. 《手把手教你》系列基础篇(八十)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试-番外篇(详解教程)

    1.简介 经过前边几篇知识点的介绍,今天宏哥就在实际测试中应用一下前边所学的依赖测试.这一篇主要介绍在TestNG中一个类中有多个测试方法的时候,多个测试方法的执行顺序或者依赖关系的问题.如果不用de ...

  4. 《手把手教你》系列基础篇(九十二)-java+ selenium自动化测试-框架设计基础-POM设计模式简介(详解教程)

    1.简介 页面对象模型(Page Object Model)在Selenium Webdriver自动化测试中使用非常流行和受欢迎,作为自动化测试工程师应该至少听说过POM这个概念.本篇介绍POM的简 ...

  5. 《手把手教你》系列基础篇(七十五)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 中篇(详解教程)

    1.简介 上一篇中介绍了DataProvider如何传递参数,以及和一些其他方法结合传递参数,今天宏哥接着把剩下的一些常用的也做一下简单的介绍和分享. 2.项目实战1 @DataProvider + ...

  6. 《手把手教你》系列基础篇(七十六)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 下篇(详解教程)

    1.简介 今天这一篇宏哥主要是结合实际工作中将遇到的测试场景和前边两篇学习的知识结合起来给大家讲解和分享一下,希望以后大家在以后遇到其他的测试场景也可以将自己的所学的知识应用到测试场景中. 2.测试场 ...

  7. 《手把手教你》系列基础篇(九十三)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-上篇(详解教程)

    1.简介 上一篇介绍了POM的基础理论知识和非POM方式写脚本,这篇介绍利用页面工厂类(page factory)去实现POM,通过查看PageFactory类,我们可以知道它是一个初始化一个页面实例 ...

  8. 《手把手教你》系列技巧篇(二十七)-java+ selenium自动化测试- quit和close的区别(详解教程)

    1.简介 尽管有的小伙伴或者童鞋们觉得很简单,不就是关闭退出浏览器,但是宏哥还是把两个方法的区别说一下,不然遇到坑后根本不会想到是这里的问题. 2.源码 本文介绍webdriver中关于浏览器退出操作 ...

  9. 《手把手教你》系列基础篇(八十一)-java+ selenium自动化测试-框架设计基础-TestNG如何暂停执行一些case(详解教程)

    1.简介 在实际测试过程中,我们经常会遇到这样的情况,开发由于某些原因导致一些模块进度延后,而你的自动化测试脚本已经提前完成,这样就会有部分模块测试,有部分模块不能进行测试.这就需要我们暂时不让一些t ...

随机推荐

  1. Linux命令date日期时间和Unix时间戳互转

    A.将日期转换为Unix时间戳将当前时间以Unix时间戳表示: date +%s 输出如下: 1361542433 转换指定日期为Unix时间戳: date -d '2013-2-22 22:14' ...

  2. Android中四大组件

    Activity  BroadCast Receiver 广播接收者 Service  服务 Content Provider 内容提供者   四大组件都需要在清单文件里面配置一下

  3. Jquery--1--选择器分类

    基本选择器 $("#id")            //ID选择器 $("div")            //标签选择器 $(".classname ...

  4. MySQL--数据表操作--行转列和列转行

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11782549.html MySQL--数据表操作: 会用到的查询操作. 1. Limit的用法 ...

  5. 匿名内部类不能访问外部类方法中的局部变量,除非变量被声明为final类型

    1. 这里所说的"匿名内部类"主要是指在其外部类的成员方法内定义,同时完成实例化的类,若其访问该成员方法中的局部变量,局部变量必须要被final修饰.2. 原因是编译程序实现上的困 ...

  6. List接口中特有方法

    import java.util.ArrayList; import java.util.List; /* List接口中特有方法: 添加 add(int index, E element) addA ...

  7. OSPF多区域的进阶强化版

    OSPF多区域 1.OSPF多区域原理 2.末梢区域配置 1.生成OSPF多区域的的原因:改善网络的可扩展性,快速收敛. OSPF的三种通信量:a域内通信量(单个区域内的路由器之间交换数据包构成的通信 ...

  8. Java中File类的方法详解

    File类也是Java中一个比较重要的类,通过他我们可以实现对文件的一系列操作,其内置了很多方法,下面我将按方法的功能分块,逐一讲解: 快速导航 构造方法 常用方法 创建目录 判断 `is...` t ...

  9. Hibernate处理MySQL的时间

    如果Java使用使用 java.util.Date 作为持久化对象属性,在 Mysql 中使用 YEAR.DATE.TIME.TIMESTAMP.DATETIME 五种类型 则需要添加@Tempora ...

  10. JVM性能调优与实战基础理论篇-中

    JVM内存模型 概述 我们所说的JVM内存模型是指运行时数据区,用New出来的对象放在堆中,如每个线程中局部变量放在栈或叫虚拟机栈中,下图左边区域部分为栈内存的结构.如main线程包含程序炯酸器.线程 ...