TestNG 开源自动化测试框架

2023-11-10

摘要:
TestNG是一个开源自动化测试框架;TestNG表示下一代。 TestNG是类似于JUnit(特别是JUnit 4),但它不是一个JUnit扩展。它的灵感来源于JUnit。它的目的是优于JUnit的,尤其是当测试集成的类。

主要内容:
TestNG编写测试:
编写TestNG测试基本上包括以下步骤:

  1. 测试和编写业务逻辑,在代码中插入TestNG的注解..
  2. 添加一个testng.xml文件或build.xml中在测试信息(例如类名,您想要运行的组,等..)
  3. 运行 TestNG.

TestNG基本注解(注释):
@BeforeSuite 注解的方法将只运行一次,运行所有测试前此套件中。
@AfterSuite 注解的方法将只运行一次此套件中的所有测试都运行之后。
@BeforeClass 注解的方法将只运行一次先行先试在当前类中的方法调用。
@AfterClass 注解的方法将只运行一次后已经运行在当前类中的所有测试方法。
@BeforeTest 注解的方法将被运行之前的任何测试方法属于内部类的 标签的运行。
@AfterTest 注解的方法将被运行后,所有的测试方法,属于内部类的标签的运行。
@BeforeGroups 组的列表,这种配置方法将之前运行。此方法是保证在运行属于任何这些组第一个测试方法,该方法被调用。
@AfterGroups 组的名单,这种配置方法后,将运行。此方法是保证运行后不久,最后的测试方法,该方法属于任何这些组被调用。
@BeforeMethod 注解的方法将每个测试方法之前运行。
@AfterMethod 被注释的方法将被运行后,每个测试方法。
@DataProvider 标志着一个方法,提供数据的一个测试方法。注解的方法必须返回一个Object[] [],其中每个对象[]的测试方法的参数列表中可以分配。
@Test 方法,希望从这个DataProvider的接收数据,需要使用一个dataProvider名称等于这个注解的名字。
@Factory 作为一个工厂,返回TestNG的测试类的对象将被用于标记的方法。该方法必须返回Object[]。
@Listeners 定义一个测试类的监听器。
@Parameters 介绍如何将参数传递给@Test方法。
@Test 标记一个类或方法作为测试的一部分。

TestNG执行程序:
例子:

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;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.AfterSuite;

public class TestngAnnotation {
    // test case 1
    @Test
    public void testCase1() {
        System.out.println("in test case 1");
    }

    // test case 2
    @Test
    public void testCase2() {
        System.out.println("in test case 2");
    }

    @BeforeMethod
    public void beforeMethod() {
        System.out.println("in beforeMethod");
    }

    @AfterMethod
    public void afterMethod() {
        System.out.println("in afterMethod");
    }

    @BeforeClass
    public void beforeClass() {
        System.out.println("in beforeClass");
    }

    @AfterClass
    public void afterClass() {
        System.out.println("in afterClass");
    }

    @BeforeTest
    public void beforeTest() {
        System.out.println("in beforeTest");
    }

    @AfterTest
    public void afterTest() {
        System.out.println("in afterTest");
    }

    @BeforeSuite
    public void beforeSuite() {
        System.out.println("in beforeSuite");
    }

    @AfterSuite
    public void afterSuite() {
        System.out.println("in afterSuite");
    }

}

XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1">
  <test name="test1">
    <classes>
       <class name="TestngAnnotation"/>
    </classes>
  </test>
</suite>

运行结果:

in beforeSuite
in beforeTest
in beforeClass
in beforeMethod
in test case 1
in afterMethod
in beforeMethod
in test case 2
in afterMethod
in afterClass
in afterTest
in afterSuite

===============================================
Suite
Total tests run: 2, Failures: 0, Skips: 0
===============================================

以下内容下篇文章再进行详细讲解:
TestNG执行测试
TestNG套件测试
TestNG忽略测试
TestNG组测试
TestNG异常测试
TestNG依赖测试
TestNG参数化测试
TestNG运行JUnit测试
TestNG测试结果报告
TestNG插件与ANT
TestNG Eclipse插件

总结:
TestNG消除了大部分的旧框架的限制,使开发人员能够编写更加灵活和强大的测试。 因为它在很大程度上借鉴了Java注解(JDK5.0引入的)来定义的测试,它也可以告诉你如何使用这个新功能在真实的Java语言生产环境中。

参考文献:
TestNG介绍

本人利用Bootstrap + EasyUI + Django开发网站:http://www.xuyangting.com/ 欢迎来访

欢迎加QQ群 -> 阳台测试 -> 239547991(群号)

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

TestNG 开源自动化测试框架 的相关文章

  • 软件测试|深入了解Python中的super()函数用法

    简介 Python中的super 函数是一种强大的工具 用于在子类中调用父类的方法 它在面向对象编程中非常有用 可以让你轻松地扩展和重用现有的类 本文将详细介绍super 函数的用法 并提供一些示例来帮助你更好地理解它的功能 什么是supe
  • 软件测试|SQLAlchemy环境安装与基础使用

    简介 SQLAlchemy 是一个强大的 Python 库 用于与关系型数据库进行交互 它提供了高度抽象的对象关系映射 ORM 工具 允许使用 Python 对象来操作数据库 而不必编写原生SQL查询 本文将介绍如何安装 SQLAlchem
  • 软件测试|web自动化测试神器playwright教程(三十八)

    简介 在我们使用selenium时 我们可以获取元素的属性 元素的文本值 以及输入框的内容等 作为比selenium更为强大的web自动化测试神器 playwright也可以实现对元素属性 文本值和输入框内容的抓取 并且实现比seleniu
  • 软件测试|Pydantic处理时间类型数据

    简介 我们之前介绍过使用 pydantic 验证数据 比如校验数据的格式等 但是在我们的日常工作中 还有一种数据是需要我们验证的 比如时间数据 时间数据不同于字符串 列表等数据 与他们的验证不一样 本文就来为大家介绍一下 pydantic
  • 摸爬滚打多年的打工人,总结了三条职场真理,绝不假大空!

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 新手也能看懂的【前端自动化测试入门】!

    前言 最近在网上搜索前端自动化测试相关的文档 但是发现网上的文章都是偏使用 没有把一些基础概念说清楚 导致后续一口气遇到一些 karma Jasmine jest Mocha Chai BDD 等词汇的时候很容易一头雾水 这次一方面整理一下
  • 外包干了2个月,技术倒退2年。。。

    先说一下自己的情况 本科生 20年通过校招进入深圳某软件公司 干了接近4年的 功能测试 今年国庆 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了3年的女朋
  • 15:00面试,15:06就出来了,问的问题有点变态。。。

    从小厂出来 没想到在另一家公司又寄了 到这家公司开始上班 加班是每天必不可少的 看在钱给的比较多的份上 就不太计较了 没想到9月一纸通知 所有人不准加班 加班费不仅没有了 薪资还要降40 这下搞的饭都吃不起了 还在有个朋友内推我去了一家互联
  • Java - TestNG:为什么我的断言在 try-catch 块中写入时总是通过

    我正在尝试使用一个简单的代码org testng Assert断言 2 个用例 在第一个用例中 我断言 2 个不相等的值Fail正确 但在第二个用例中 当我在 try catch 块中断言 2 个不相等的值时 结果始终返回为Pass 我的代
  • TestNG - 如果满足条件,如何从 BeforeSuite 注释中强制结束整个测试套件

    如果满足 BeforeSuite 注释中的条件 是否有办法退出整个测试套件 也许有一种方法可以调用 AfterSuite 并绕过整个测试 我在 BeforeSuite 中进行数据库调用 如果查询返回任何结果 我会发送一封电子邮件 现在想要终
  • 在 TestNG 中使用 IMethodInterceptor 作为监听器时,仅执行最后一个 @Test

    我正在尝试使用 Factory创建类的多个实例并按照我们通过使用传递的相同顺序打印值IMethodInterceptor听众 public class MainFactoryClass implements IMethodIntercept
  • org.testng.TestNGException:在:[DynamicGraph 中找不到空闲节点

    我在 testng 中使用同一类的两种方法 但它不允许我这样 它给出了异常 org testng TestNGException 在 DynamicGraph 中找不到空闲节点 我的 testng 文件是
  • org.apache.commons.exec.ExecuteException:进程因 ChromeDriver Chrome Selenium 和 TestNG Suite 错误而退出

    当我通过 TestNG XML 执行 TestNG 套件时 我观察到以下错误 严重 org apache commons exec ExecuteException 进程退出 一个 错误 1073741502 退出值 1073741502
  • 无法使用 Gradle 运行 TestNG

    我有一个使用 TestNG 运行的简单代码 但我无法使用 Gradle 运行相同的代码 因为它说找不到 main 方法 这并不奇怪 因为我使用的是注释 但在这样的场景下 如果我必须使用Gradle 如何运行代码 请注意 我对 Gradle
  • JUnit 4 与 TestNG - 更新 2013 - 2014 [已关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 JUnit 4 和 TestNG 曾经具有可比性 这两个测试框架有何优缺点 我今天比较了 TestNG 和 JUnit4 以我有限的测试框架经验
  • 有条件跳过 TestNG 测试

    我对 TestNG 注释没有太多经验 但是我正在尝试使用 TestNG 框架和 POM 设计模式为零售网站构建测试套件 我计划使用数据驱动的方法 我的计划是通过 Excel 驱动我的测试场景 而不是使用 testng xml 例如 我将拥有
  • TestNG 与 DataProvider 并行执行

    我有一个从数据提供者接收数据的测试 我希望此测试与数据提供者的不同值并行运行 我尝试了这样的方法 public class IndependentTest Test dataProvider dp1 threadPoolSize 3 inv
  • 带有 Hamcrest 匹配器的 TestNG 软断言

    我想在 TestNG 测试中使用 Hamcrest 匹配器 并专门使用软断言 我怎样才能做到这一点 我知道我可以在测试中使用 Hamcrest 的断言 例如 assertThat actual containsInAnyOrder expe
  • 存根方法时出现 InvalidUseOfMatchersException

    我有这个 TestNG 测试方法代码 InjectMocks private FilmeService filmeService new FilmeServiceImpl Mock private FilmeDAO filmeDao Bef
  • TestNG 启动期间发生内部错误

    我创建了一个 TestNG 类 FirstTest java 当我将测试用例作为 TestNG Test 运行时 出现以下错误 期间发生内部错误 启动 FirstTest java lang NullPointerException Ecl

随机推荐

  • kmp(看毛片)算法

    别人的两篇博客 传送门1 传送门2 摘录 其中T为主串 P为模式串 其实就是在T中找P 其中next数组存的是 部分匹配值 部分匹配值 就是 前缀 和 后缀 的最长的共有元素的长度 以 ABCDABD 为例 A 的前缀和后缀都为空集 共有元
  • 如何安装使用IP广播?

    步骤一 连接设备到同个局域网 设备连接网络 所有的设备与服务器处于同个局域网内 测试时放在同个交换机内 步骤二 在服务器上安装广播软件 再服务器上安装 数字网络广播系统软件 运行目录下的 Setup exe 文件 一直下一步直到完成 再服务
  • TortoiseSVN使用方法

    安装和配置 TortoiseSVN的下载地址为 http tortoisesvn net downloads html 有32位和64位的版本 一定要根据自己的操作系统下载对应的版本 最好安装一个简体中文的Language packs 可以
  • C++opencv进行图像处理(三)图像的基本操作

    1 图像像素的加法 主要包含了图像的像素加法 当像素增加 会使得图像变亮 当像素减少会使得图像变暗 除法操作会变暗 结果如下所示 左边是原图 右边是像素相加后的 在前面的代码模块中增加的代码为 void QuickDemo pixel op
  • STM32学习笔记—独立看门狗

    1 独立看门狗的介绍 2 独立看门狗的使用 3 代码段 1 独立看门狗的介绍 独立看门狗利用系统内部的低速时钟提供机械周期 这个低速时钟与系统的工作时钟不是一个时钟 所以看门狗的运行和系统的运行是互不干扰的 独立看门狗由内部专门的 40Kh
  • 计算机视觉---常见的颜色空间

    RGB 最常见的面向硬件设备的彩色模型 它是人的视觉系统密切相连的模型 根据人眼结构 所有的颜色都可以看做是3种基本颜色 红r 绿g 蓝b的不同比例的组合 HSV HSV颜色空间是孟塞尔彩色空间的简化形式 是一种基于感知的颜色模型 它将彩色
  • ShardingSphere水平、垂直分库、分表和公共表

    目录 一 ShardingSphere简介 二 ShardingSphere 分库分表 1 垂直拆分 1 垂直分库 2 垂直分表 2 水平拆分 1 水平分库 2 水平分表 三 水平分库操作 1 创建数据库和表 2 配置分片的规则 3 测试类
  • Java内存分配介绍

    Java的内存分配主要有三个位置 方法区 就是字节文件 存储未运行的代码 栈内存 当方法运行的时候 则在栈内存中存储 堆内存 当方法新生成对象的时候 或者新产生出局的时候将在堆内存中存储 方法区 字节文件加载时进入的内存 存储的就是编写成功
  • 常用服务器指令

    查看docker 容器占用进程 docker top 容器id 容器名 查看进程占用内存 top p PID 查看服务器所有进程 pid ef 查看内存 free 查看占用CUP最多 ps aux sort k4nr head n 10 查
  • 【Mariadb数据库用户及权限管理】

    一 用户管理 1 创建用户 方法一 直接创建用户 create user 用户名 来源 identified by 密码 来源地址 localhost 本机 192 168 150 网段 所有 方法二 在授权同时就创建用户 grant 权限
  • VTK笔记-图形相关-判断空间上的点是否在图元内-vtkSelectEnclosedPoints

    判断空间上的点是否在几何图元内 使用vtkSelectEnclosedPoints类 vtkSelectEnclosedPoints vtkSelectEnclosedPoints类可以判断标记点是否在封闭表面内 vtkSelectEncl
  • 【CVPR2021】文章、代码和数据链接

    Awesome CVPR2021 Low Level Vision 整理汇总下今年CVPR图像重建 Image Reconstruction 底层视觉 Low Level Vision 相关的论文和代码 括超分辨率 图像去雨 图像去雾 去模
  • 解决 ANSJ分词 自定义词典文件无效

    注意 1 指定配置文件的路径时 建议配置为绝对路径 这种方式最简单 否则需自行解决路径的问题 2 配置文件的内容 词典各字段之间使用tab t 分割 一般发现自定义字典无效 就是因为使用的不是tab t 而是4个空格等 所以 一定要记住 t
  • Bootstrap 3导航栏

    Today we continue Bootstrap 3 lessons and review Bootstrap 3 Navbar In our new lesson we will try to disassemble the nav
  • 关于复位的一些总结

    同步reset synchronous reset 是说 当reset信号为active的时候 寄存器在下一个时钟沿到来之后被复位 时钟沿到来之前寄存器还是保持其之前的值 异步reset asynchronous reset 是说 当res
  • bash: /opt/ros/kinetic/setup.bash: 没有那个文件或目录

    我安的是ROS melodic版本 但是使用的是kinetic版本的安装教程 这就导致了在有一步 添加环境变量时 使用echo指令 忘了将教程中的kinetic改成melodic 所以出现了以下的现象 当我source bashrc的时候
  • Java学习笔记 -- 包 (package)

    Java 面向对象篇 笔记首页 序号 内容 链接地址 1 面向对象概述 https blog csdn net weixin 44141495 article details 107999131 2 类与对象 https blog csdn
  • 2022蓝桥杯JAVA研究生组--我写了几个

    试题 A 排列字母 本题总分 5 分 问题描述 小蓝要把一个字符串中的字母按其在字母表中的顺序排列 例如 LANQIAO 排列后为 AAILNOQ 又如 GOODGOODSTUDYDAYDAYUP 排列后为 AADDDDDGGOOOOPST
  • 晶振是如何起振的?

    01 皮尔斯晶体振荡器 目前工作中用得最多的就是皮尔斯晶体振荡器 也就是下面这个结构 CL1 CL2为匹配电容 Rext通常为串联的几百欧姆电阻 有时也不加 上面这个结构可能看着不是很熟悉 我们把它转换一下 变成下面这个就熟悉些 上图中把R
  • TestNG 开源自动化测试框架

    摘要 TestNG是一个开源自动化测试框架 TestNG表示下一代 TestNG是类似于JUnit 特别是JUnit 4 但它不是一个JUnit扩展 它的灵感来源于JUnit 它的目的是优于JUnit的 尤其是当测试集成的类 主要内容 Te