TestNG测试的并发执行详解

2023-10-26

TestNG在执行测试时,默认suitethreadpoolsize=1,-randomizesuites=false,即非并发顺序执行测试。

但是TestNG提供了多种方式,以支持测试的并发多线程执行。

1. 针对多个测试规划的情况,为每个testng*.xml配置文件使用独立的线程执行

java org.testng.TestNG -suitethreadpoolsize 3 testng1.xml testng2.xml testng3.xml

通过使用启动参数suitethreadpoolsize,为每个测试规划文件分配一个线程并发执行。

 

2. 在一个测试规划中,指定其线程并发的策略

1).通过启动测试的命令行参数-parallel

启动参数-parallel用以设置测试执行的默认并发策略。之所以说“默认并发策略”,是因为这里的设置可以被testng.xml配置文件中的并发策略所覆盖。

另外,启动测试时不设置-parallel参数,则默认策略是不使用并发线程。但究竟是否并发执行,还要看testng.xml中的配置。

 

java org.testng.TestNG -parallel methods -threadcount 4 testng.xml

说明:在当前测试规划的执行过程中,为每个测试方法的执行使用单独的线程,最多并发4个线程。对比于其他并发策略,测试方法的并发粒度最小,所以这也是最大程度的并发策略。

 

java org.testng.TestNG -parallel tests -threadcount 4 testng.xml

说明:在当前测试规划的执行过程中,为每个测试用例的执行使用单独的线程(该测试用例中的所有测试方法共享一个线程),最多并发4个线程。

 

java org.testng.TestNG -parallel classes -threadcount 4 testng.xml

说明:在当前测试规划的执行过程中,为每个测试类的执行使用单独的线程(该测试类中的所有测试方法共享一个线程),最多并发4个线程。
 

2).通过testng.xml配置文件

<suite name="My suite" parallel="methods" thread-count="4">

说明:在当前测试规划的执行过程中,为每个测试方法的执行使用单独的线程,最多并发4个线程。

 

<suite name="My suite" parallel="tests" thread-count="4">

说明:在当前测试规划的执行过程中,为每个测试用例的执行使用单独的线程(该测试用例中的测试方法共享一个线程),最多并发4个线程。

 

<suite name="My suite" parallel="classes" thread-count="4">

说明:在当前测试规划的执行过程中,为每个测试类的执行使用单独的线程(该测试类中的测试方法共享一个线程),最多并发4个线程。

 

<suite name="My suite" parallel="instances" thread-count="4">

说明:在当前测试规划的执行过程中,为每个测试类实例的执行始终使用唯一的线程(该测试实例中的测试方法共享一个线程),最多并发4个线程。

注意:这里的parallel默认值为"none"。曾经的"true", "false"已经过时了,不建议使用。

 

3. 在测试方法中,指定其可用的线程池

还可以单独为一个测试方法指定可使用的线程池,示例如下:

@Test(threadPoolSize = 3, invocationCount = 10,  timeOut = 10000)
public void testServer() {...}

说明:该测试方法可在3个线程中并发执行,共被调用10次,执行超时10秒。

 

4. @DataProvider的并发

在定义数据源的时候,不仅仅可以为数据源指定name,还可以为其指定parallel属性,示例如下:

@DataProvider(name = "test1", parallel = true)
public Object[][] createData1() {
 return new Object[][] {
   { "Cedric", new Integer(36) },
   { "Anne", new Integer(37)},
 };
}

说明:parallel属性默认false,表示使用该数据源的测试方法不能并发执行。parallel属性设置为true,表示使用该数据源的测试方法可以并发执行。

 

5. 注意:在定义测试类的时候,如果@Test使用了singleThreaded=true属性,则该测试类的所有测试方法都只能在单线程中执行,无论其他设置如何。示例如下:

@Test(singleThreaded=true)
public class Test1 {
  public void test1() {
  }
 
  public void test2() {
  }
}

 

参考链接:

http://testng.org/doc/documentation-main.html

https://github.com/cbeust/testng/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TestNG测试的并发执行详解 的相关文章

随机推荐

  • QT日常报错解决方案

    日常报错 3 1 undefined reference to vtable vtable 表示的是虚表 这个错误出现时 请检查你的父类所有虚函数是否实现 或者子类是否把父类的虚函数都处理完 注意 析构函数也算 有时候一开始没有添加Q OB
  • 专业程序员开发-老狼孩插件懒人精灵版

    老狼孩插件懒人版 综合分类版 v1 7 5有新版啦 完全开放 免费使用 全新改版 1 优化 调试输出默认延迟1000毫秒 2 新增 更新类 阿里云json版热更新 定时关闭界面自动更新 无界面自动更新 3 新增 更新类 坚果云json版热更
  • 服务器太小是什么情况 显示小,服务器内存显示的比实际的小

    服务器内存显示的比实际的小 内容精选 换一换 弹性云服务器创建成功后 使用free m命令查询内存大小 查询结果与实际配置不符 较之创建时的配置要小一些 示例 假设创建该弹性云服务器时 配置的实际内存大小为4194304KB 即4096MB
  • QT之QChart的简介

    QT之QChart的简介 1 创建图表 2 设置图表标题和坐标轴标签 3 定制图表样式 4 显示图表 5 保存图表为图像 QChart 是 Qt Charts 模块中的一个主要类 用于创建和管理图表 QChart 提供了一组用于创建各种类型
  • Vue实现面包屑功能(el-breadcrumb)

    vue3 elementPlus 实现面包屑功能 文章后面附效果图 数据结构 首先展示一下数据基础结构 红色框框是默认存在的数据 其他数据就是通过选中侧边栏菜单进行数据插入 关键数据字段为 path meta 准备侧边栏 首先需要自己准备一
  • 常用对象类型之间的转换

    ads point 是原来的ADS 编程中定义的一种数据类型 其定义为 typedef ads real ads point 3 而ads real 则被定义为 typedef double ads real 可以看出 ads point
  • 前端知识14:webpack打包图片资源

    需要下载url loader 和 file loader两个包 前者依赖于后者 安装 npm i url loader file loader D 图片在css中使用的场景 注意图片在src目录下 注意图片路径的写法用的是相对路径 引用插件
  • C++ vector 容器浅析

    C STL 教程 C STL 教程 C vector 容器浅析 C vector 容器浅析 个人理解 vector就是一个模板类 具有元素多少可以变化的优点 一般为了根据数据类型 会选择显式实例化 下为一个利用vector模板 将一维数组转
  • 【华为OD统一考试B卷

    题目描述 一群大雁往南飞 给定一个字符串记录地面上的游客听到的大雁叫声 请给出叫声最少由几只大雁发出 具体的 1 大雁发出的完整叫声为 quack 因为有多只大雁同一时间嘎嘎作响 所以字符串中可能会混合多个 quack 2 大雁会依次完整发
  • blender 线框效果/Line Art

    Blender 2 93 新功能 Line Art 效果 哔哩哔哩 bilibilihttps www bilibili com video BV19Z4y1w7mk from search seid 1496511710922071136
  • 在Linux系统如何修改profile文件后立即生效呢?

    方法1 让 etc profile文件修改后立即生效 可以使用如下命令 etc profile 注意 和 etc profile 有空格 方法2 让 etc profile文件修改后立即生效 可以使用如下命令 source etc prof
  • go语言字符类型byte与rune

    字符串中的每一个元素叫做 字符 在遍历或者单个获取字符串元素时可以获得字符 Go语言的字符有以下两种 一种是 byte 型 是 uint8 的别名 代表了 ASCII 码的一个字符 另一种是 rune 类型 代表一个 UTF 8 字符 当需
  • Java中JDBC的数据库连接池

    数据库连接池 池参数 所有池参数都有默认值 初始大小 10个 最小空闲连接数 3个 增量 一次创建的最小单位 5个 最大空闲连接数 12个 最大连接数 20个 最大的等待时间 1000毫秒 四大连接参数 连接池也是使用四大连接参数来完成创建
  • 快速+完美+准确解决SpringBoot项目打包后的SNAPSHOT.jar中没有主清单属性的问题

    目录 问题再现 问题解决 结果 问题再现 xxxx 0 0 1 SNAPSHOT jar中没有主清单属性 问题解决 1 出问题的pom xml文件
  • 一个build脚本欣赏

    build scripts My basic build bat file looks like this echo off erase ThemeChanger exe copy Loader ArmRel Loader exe copy
  • Nginx安装

    目录 1 前期准备 2 将安装文件上传至安装目录 3 nginx安装 3 1安装openssl 3 2安装zlib 3 3安装pcre 3 4 安装nginx 4 nginx配置 4 1 检查nginx是否安装成功 4 2 nginx配置普
  • 怎么使用java servlet +jsp 实现一个简单的信息管理系统

    写之前看一下命名规范 数据库命名规范参考 Java命名规范参考 一 绪论 昨天 在群里看见一个大二学生叫帮忙代做Java课设 心怀着锻炼技术又可赚点零花钱就帮忙代做了 下面来说说怎么快速使用servlet jsp进行一个简单的信息管理系统搭
  • 20210715:力扣第1846题:减小和重新排列组合后的最大元素(java)

    题目 给你一个正整数数组 arr 请你对 arr 执行一些操作 也可以不进行任何操作 使得数组满足以下条件 arr 中 第一个 元素必须为 1 任意相邻两个元素的差的绝对值 小于等于 1 也就是说 对于任意的 1 lt i lt arr l
  • 归并算法

    归并算法 1 在解释算法优缺点的时候 首先要提到2点 一是比较的次数 二是数据要改变或移动的次数 第一个比较好理解 那什么叫改变和移动的次数呢 比如说2这个数据在存储上存储的是10 如果现在2变成4 那么存储就变成了100 这个过程需要将2
  • TestNG测试的并发执行详解

    TestNG在执行测试时 默认suitethreadpoolsize 1 randomizesuites false 即非并发顺序执行测试 但是TestNG提供了多种方式 以支持测试的并发多线程执行 1 针对多个测试规划的情况 为每个tes