背景:

有时,需要按特定顺序调用测试方法。例如:

  • 在运行更多测试方法之前,请确保一定数量的测试方法已经完成并成功。

  • 在希望将初始化的方法也用作测试方法的同时初始化测试项目。

TestNG允许使用注解或XML指定依赖项。

1. 使用注解指定依赖

    可以使用@Test注解中的属性 dependsOnMethods 或dependsOnGroups。

    有两种依赖关系:

    强依赖。所依赖的所有方法都必须已经运行并成功运行。如果依赖项中至少发生了一次故障,则不会调用它并将其标记为SKIP。

 弱依赖。即使其中一些方法失败了,也会始终在所依赖的方法之后运行。如果想确保测试方法以特定顺序运行但它们的成功并不真正取决于其他方法的成功时,这将非常有用。通过在@Test批注中添加“ alwaysRun = true”来获得弱依赖性。

强依赖的示例:

@Testpublic void serverStartedOk() {} @Test(dependsOnMethods = { "serverStartedOk" })public void method1() {}

在这个示例中,method1()被声明为依赖于方法serverStartedOk(),这保证了将始终优先调用serverStartedOk()。

也可以依赖整个组:​​​​​​​

@Test(groups = { "init" })public void serverStartedOk() {} @Test(groups = { "init" })public void initEnvironment() {} @Test(dependsOnGroups = { "init.*" })public void method1() {}

在这个示例中,method1()被声明为依赖于与正则表达式“ init.*”匹配的任何组,这保证了将始终在method1()之前调用方法serverStartedOk()和initEnvironment()。

注意:如之前所述,在同一个测试项目运行中,不能保证属于同一组的方法的调用顺序是相同的。

如果依赖的方法失败并且有严格的依赖关系(alwaysRun = false,这是默认设置),则依赖于该方法的方法不会标记为FAIL,而是会标记为SKIP。跳过的方法也将在最终报告中展示(在HTML中既不是红色也不是绿色),因为跳过的方法不一定会失败(标有@ Before / After的方法将不展示在最终报告中)。

    DependsOnGroups和dependsOnMethods

DependsOnGroups和dependsOnMethods都接受正则表达式作为参数。对于dependsOnMethods,如果依赖于一个碰巧具有多个重载版本的方法,则将调用所有重载方法。如果只想调用重载方法之一,则应使用dependsOnGroups。

默认情况下,从属方法按类分组。例如,如果方法b()依赖于方法a(),并且有几个包含这些方法的类实例(如果涉及data provider和factory),则调用顺序如下:

a(1)a(2)b(2)b(2)

在所有实例都调用完其a()方法之前,TestNG不会运行b()。

但是在某些情况下,例如在测试登录和退出Web浏览器的情况下,可能不希望出现上述行为。在这种情况下,应该需要如下顺序:​​​​​​​

signIn("us")signOut("us")signIn("uk")signOut("uk")

可以使用XML属性group-by-instances实现。 该属性在<suite>或<test>上有效:​​​​​​​

  <suite name="Factory" group-by-instances="true">or  <test name="Factory" group-by-instances="true">

2. 使用XML指定依赖

可以在testng.xml文件中指定组依赖性。使用<dependencies>标记来实现此目的:​​​​​​​

<test name="My suite">  <groups>    <dependencies>      <group name="c" depends-on="a  b" />      <group name="z" depends-on="c" />    </dependencies>  </groups></test>

<depends-on>属性包含以空格分隔的组列表。

TestNG学习-依赖的更多相关文章

  1. TestNG学习-001-基础理论知识

    此 文主要讲述用 TestNG 的基础理论知识,TestNG 的特定,编写测试过程三步骤,与 JUnit4+ 的差异,以此使亲对 TestNG 测试框架能够有一个简单的认知. 希望能对初学 TestN ...

  2. TestNG学习-002-annotaton 注解概述及其执行顺序

    此文主要讲述用 TestNG 基础的 annotation (注解)知识,及其执行的顺序,并通过一个 TestNG 简单的实例演示 annotation 的执行顺序. 希望能对初学 TestNG 测试 ...

  3. 迟到的 WPF 学习 —— 依赖项属性

    本章学习依赖项属性,英文原文 Dependency Property,它是传统 .Net Framework 属性的扩展,是 WPF 的专属,但所幸使用起来和传统属性几乎一样.WPF 元素所提供的大多 ...

  4. Java自动化测试框架-09 - TestNG之依赖注入篇 (详细教程)

    1.-依赖注入 TestNG支持两种不同类型的依赖项注入:本机(由TestNG本身执行)和外部(由诸如Guice的依赖项注入框架执行). 1.1-本机依赖项注入 TestNG允许您在方法中声明其他参数 ...

  5. testng学习-before&after,parameters,并行,factory,beanshell,监听器,依赖注入

    一系列的before after的操作测试 [TestNG] Running: C:\Users\user\AppData\Local\Temp\testng-eclipse-1538841744\t ...

  6. testNG 学习笔记 Day 1 使用功能详解

    TestSuite处理测试用例有6个规约(否则会被拒绝执行测试) A 测试用例必须是公有类(Public) B 测试用例必须继承与TestCase类 C 测试用例的测试方法必须是公有的( Public ...

  7. TestNg 7.依赖测试

    我本个测试方法执行的时候,依赖于其他的方法.用到关键字dependsOnmethods(依赖于那个方法)也有依赖于哪个组(dependsOnGroups). 看以下的一段代码: package com ...

  8. Java接口自动化测试之TestNG学习(二)

    在maven项目的pom.xml文件中导入TestNG <?xml version="1.0" encoding="UTF-8"?> <pro ...

  9. TestNG—学习笔记2

    关于TestNG,也是一边学一边总结,对于TestNG和Junit的比较其实也没有什么意义,都是一种测试框架,都是为了应用而生的东西,没有必要说谁好谁不好了.用的熟练用的好就是真的好啊. 下面简单的总 ...

随机推荐

  1. ElasticSearch7.2简单命令实操(postman版)

    使用postman访问操作ElasticSearch数据库,数据格式均为json 目录 使用postman访问操作ElasticSearch数据库,数据格式均为json 一.集群设置 1.查看集群设置 ...

  2. scrapy异步的爬虫框架简单的使用

    scrapy异步的爬虫框架 异步的爬虫框架 高性能的数据解析,持久化存储,全栈数据的爬取,中间件,分布式 框架:就是一个集成好了各种功能且具有很强通用性的一个项目模板. 环境安装: Linux: pi ...

  3. unity3D进阶

    前言 在之前的例子中,我们都没有用到unity的精髓,例如地形系统.物理系统.粒子系统等,本文记录unity3D的进阶简单应用 前期准备 https://unity.cn/releases/full/ ...

  4. PWN_ret2text,ret2syscall,ret2shellcode

    首先了解下Linux中的保护机制(具体的绕过等后续再说) 1.canary(栈保护) 在函数开始时就随机产生一个值,将这个值CANARY放到栈上紧挨ebp的上一个位置,当攻击者想通过缓冲区溢出覆盖eb ...

  5. 【转载】HTTP 协议详细介绍

    背景 当你在浏览器地址栏敲入"http://www.cnblogs.com/",然后猛按回车,呈现在你面前的,将是博客园的首页了(这真是废话,你会认为这是理所当然的).作为一个开发 ...

  6. 使用Robo 3T访问MongoDB数据库

    使用Robo 3T操作MongoDB数据库教程:https://blog.csdn.net/baidu_39298625/article/details/99654596 在IDEA中用三个jar包链 ...

  7. LOJ10019生日蛋糕

    Mr.W 要制作一个体积为 N*π 的 M 层生日蛋糕,每层都是一个圆柱体. 设从下往上数第 i 蛋糕是半径为 R_i,高度为 H_i 的圆柱.当 i<M 时,要求 R_i>R_{i+1} ...

  8. svn 启动项目报错,项目被lock

    问题描述 问题解决 (一)Eclipse SVN 插件处理 (二)SVN 客户端处理 (三)删除lock文件 问题描述 在使用开发工具开发项目时(如Eclipse),在做项目的中途,有时候Eclips ...

  9. 关于Spring Boot的博客集合

    掘金: 关于Spring Boot的博客集合 CSDN: Spring Boot教程 掘金: SpringBoot2 简书: Spring Boot 核心技术 天码营 Spring Data JPA: ...

  10. 学生信息管理系统总结——student数据库中表关系分析

    说到关系,那就不得不提两个东西: 1.E-R图,也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型.属性和联系的方法,用来描述现实世界的概念模型 2.关系模 ...