首页 > 其他分享 >TestNG 介绍

TestNG 介绍

时间:2024-06-20 14:11:06浏览次数:26  
标签:框架 Selenium 介绍 TestNG 测试 使用 运行

一、TestNG 介绍

1、TestNG 是一个来自 JUnit 和 NUnit 的测试框架,它具拥有更多的功能,提高了 执行的效率。

2、TestNG 是一个开源的自动化测试框架 去除了老框架的大部分限制,借助于简单的注释、分组、排序和参数化这些功能。使脚本开发人员能够编写更灵活、更强大的测试用例脚本。

 

二、 TestNG的优点

1、可以生成日志

2、注释使代码高效且易于管理

3、能够生成执行的HTML报告

4、测试用例可以分组并按优先级排序

5、可以实现并行测试

 6、可以实现数据参数化

 

三、TestNG常用注解

1、@BeforeSuite:

使用这个注解的方法会在test suite中的所有test运行之前运行。

2、@AfterSuite:

使用这个注解的方法会在test suite中的所有test运行之后运行。

3、@BeforeTest:

使用这个注解的方法会在xml文件中的test标签中的每个test方法运行之前运行。

4、@AfterTest:

使用这个注解的方法会在xml文件中的test标签中的每个test方法运行之后运行。

5、@BeforeClass:

使用这个注解的方法会在当前这个类的第一个test方法运行之前运行。

6、@AfterClass:

使用这个注解的方法会在当前这个类的最后一个test方法运行之后运行。

7、@BeforeMethod:

使用这个注解的方法会在每个test方法运行之前运行。

8、@AfterMethod:

使用这个注解的方法会在每个test方法运行之后运行。

 

四、使用注解的好处

1、TestNG通过查找注解来标识对应的方法,所以不依赖于方法名来识别。

2、我们可以将参数传递给注解。

3、注释是强类型的,所以有任何错误编译器都会立即给出提示。

4、测试类不再需要扩展任何东西(例如Junit 3的测试用例)

TestNG 是一个基于 Java 的开源测试自动化框架。它涵盖了更广泛的测试类别:单元、功能、端到端、集成等。由于其有用的功能,如分组、依赖、优先级排序、易于使用,该框架在开发人员和测试人员中非常流行用于测试创建多个注释等。它受欢迎的另一个原因是它可以帮助他们以结构化的方式组织测试并增强脚本的可维护性和可读性。

虽然它是按照与 NUnit 和 JUnit 相同的路线开发的,但其高级功能使其成为一个比同类框架更强大的框架。

选择合适的 Selenium Java 框架

如今,新一代框架不断涌现,它们具有多种优势,标志着应用程序创建和使用方式的转变。当然,最好的框架取决于您、您的团队以及您要实现的目标。但如果您的理想选择是 TestNG,那么此 TestNG 框架教程将指导您,以便您可以快速轻松地测试任何内容。

JUnit 5 与 TestNG

JUnit 和 TestNG 是用于自动化 Selenium 测试的最流行的 Java 框架。您应该选择最适合您要求的那个。

让我们了解 JUnit 5 与 TestNG 之间的核心区别。

  • JUnit 是一个开源的 java 单元测试框架,而 TestNG 也是一个基于 Java 的框架,但具有更广泛的范围,适用于不同类型的测试,如功能、端到端、单元等。
  • 来到 Junit 5 和 TestNG 的注释,TestNG 注释可以很容易地使用,并且有更多的注释可以在测试脚本中使用。
  • 依赖测试仅支持 TestNG。在这些测试中,除非依赖方法运行并通过,否则一种方法将不会运行。

开始使用 TestNG

TestNG 框架教程的这一部分将帮助您开始使用 TestNG 框架运行自动化测试。

在 Eclipse 中安装 TestNG

在 Eclipse 中安装 TestNG 用于开发和测试代码。在 Eclipse 中安装 TestNG 的方法有很多种。我们已经讨论了在 Eclipse 中安装 TestNG 的各种方法。它们包括通过以下方式在 Eclipse 中安装 TestNG 插件:

  • 通过市场
  • 没有市场
  • 通过下载库

在 Eclipse 中创建 TestNG 项目

了解如何从头开始创建 TestNG 项目并编写您的第一个测试脚本。入门需要一些先决条件,它们是 Eclipse IDE 和下载 Selenium WebDriver,以及 Java 客户端。

这些是接下来要遵循的步骤 -

  • 在 Eclipse 中创建一个 TestNG 项目
  • 将 Selenium JAR 文件添加到 Selenium TestNG 项目
  • 在 Eclipse 中创建一个 TestNG 类
  • 使用 Selenium 编写我们的第一个测试用例
  • 在 Eclipse 和 TestNG 中创建 TestNG 类
  • 生成 TestNG 报告

使用 TestNG 运行测试

TestNG 框架教程的这一部分将作为您使用 TestNG 成功运行测试的分步指南。

使用 Selenium 的自动化 TestNG

让我们通过这个 TestNG 框架教程来了解自动化。TestNG 是自动化工程师的热门选择,他们可以依赖其内置功能,并且知道他们背后有一个活跃的开发人员社区。

深入了解使用 TestNG 进行自动化的实际演示。我们将介绍使用 2 个最常用的 IDE(Eclipse 和 IntelliJ)的安装过程。

为了更好地理解自动化过程,我们强调了注释和属性。注释用于为测试脚本中的任何函数提供含义并描述其行为。属性是注释的一部分,有助于使我们的测试更加明确。

TestNG 中的并行测试执行

传统的手动测试方法已经被自动化测试所取代。一种广泛采用的自动化测试策略是从顺序测试向并行测试的转变。

为了节省时间并确保最大覆盖率,QA 团队从顺序测试转变为并行测试。测试可以在多种设备、浏览器和操作系统组合上运行。您可以测试应用程序或应用程序的组件。

使用 TestNG XML 配置了解 Selenium 中的并行测试执行,并学习如何在云网格上的 TestNG 中执行并行测试。

创建 TestNG XML 文件

当您使用 Selenium Grid 时,一次运行一个测试不会非常有效。您需要并行执行多个测试用例以充分利用它。

从单个文件执行多个测试文件的一种方法是使用 TestNG XML 文件。该文件允许您指定要运行的测试文件并提供对测试执行的额外控制。通过使用此文件,您可以轻松地管理和运行多个测试文件。

深入研究这个关于创建 TestNG XML 文件的博客,了解为什么以及如何创建 TestNG XML 文件,并了解如何运行 TestNG XML 文件及其并行执行。

使用 Selenium、Cucumber 和 TestNG 实现自动化

准备好运行您的第一个 Cucumber 脚本并利用 TestNG 功能执行并行测试。

Cucumber 是一个 BDD 框架,用于为行为驱动开发 (BDD) 框架编写和运行测试。它允许使用开发人员和非技术利益相关者易于理解的自然语言编写测试。

这有助于改善团队成员之间的沟通和协作,并确保正在构建的系统将满足其用户的要求和期望。

使用 TestNG 运行 JUnit Selenium 测试

JUnit 是 Java 的单元测试框架,而 TestNG 是范围比单元测试更广泛的 Java 框架。JUnit 和 TestNG 都可以用来运行单元测试,但它们在方法和功能上有一些不同。

TestNG 框架支持的测试类别比 JUnit 多,使得测试用例从 JUnit 迁移到 TestNG 更容易。使用 TestNG 运行 JUnit 测试的优点之一是它允许您避免完全重写最初使用 JUnit 框架编写的测试场景。它可以节省时间和精力,并使您能够利用 TestNG 的功能。

深入研究 TestNG 的高级用例

在 TestNG 框架教程的这一部分,您将通过深入了解 TestNG 的用例来了解有关 TestNG 测试框架的更多信息。

在 TestNG 中分组测试用例

在 TestNG 中,组是一组具有共同特征的测试方法。组用于有选择地运行特定测试或从测试运行中排除特定测试。这允许您将测试组织成逻辑单元,并根据您的需要轻松地将它们包含在测试运行中或从测试运行中排除。

例如,您可以为单元测试和集成测试等不同类型的测试创建组,然后通过指定单元测试组仅运行测试套件中的单元测试。

TestNG 还允许您定义组之间的依赖关系,以便仅当另一组中的测试已运行并通过时,一组中的测试才会运行。这对于确保某些测试仅在满足某些先决条件后才运行很有用。

在 TestNG 中确定测试的优先级

让我们在此 TestNG 框架教程中了解测试的优先级。在 TestNG 中,可以使用@Test 注释中的优先级属性来确定测试的优先级。这允许您指定执行测试的顺序。具有较低优先级值的测试将在具有较高优先级值的测试之前执行。

这在为测试用例执行定义顺序或为某些方法分配优先于其他方法时特别有用。您还可以指定应忽略某些测试。如果您想暂时禁用测试而不删除它,这会很有用。

通过使用优先级属性,您可以控制测试执行的顺序并有选择地忽略 TestNG 中的特定测试。

TestNG 中的断言

TestNG 是一个流行的 Java 测试框架。TestNG 的关键特性之一是能够在测试用例中使用断言。

断言是一种验证一段代码的输出是否符合您的预期的方法。例如,如果您正在测试计算两个数字之和的方法,则可以使用断言来验证该方法的输出是否为预期的和。如果输出与预期值不匹配,则测试将失败。

TestNG 中有多种类型的断言可用,包括检查值是真还是假、两个对象是否相等以及对象是否为空的能力。您还可以使用带有断言的自定义消息来提供有关测试失败原因的更多详细信息。

总的来说,TestNG 中的断言是验证代码正确性的强大工具。他们可以帮助您识别代码中的问题并确保它按预期工作。

TestNG 中的数据提供者

TestNG 中的 DataProvider 允许我们仅使用一个执行周期将多个参数传递给单个测试。当我们需要在一个执行周期内将多个值传递给测试时,这会很有帮助。

要在 TestNG 中使用 DataProvider,您首先需要定义一个方法,该方法返回包含要传递给测试方法的数据的对象数组。此方法应使用@DataProvider 注释进行注释。然后,在测试方法中,您可以通过在@Test 注解中引用其名称来指定使用哪个 DataProvider 。

执行测试时,TestNG 将调用 DataProvider 方法并将其返回的数据传递给测试方法。然后,测试方法可以使用此数据来执行其测试。这允许您使用多组不同的输入数据测试一段代码。它们可以帮助您确保您的代码能够正确处理不同类型的输入,并且可以帮助您识别代码的任何问题。

TestNG 中的参数化

如果您的大多数测试可能有类似的操作,那么参数化可能是适合您的工具。我们可以在我们的自动化脚本中使用参数化,这取决于我们使用的框架。

当您的应用程序涉及输入不同类型的用户交互时,参数化是必经之路。参数化您的测试允许您编写更少的测试并仍然实现相同的覆盖率。

Selenium WebDriver 中的 TestNG 侦听器

TestNG 侦听器允许您自定义测试结果并提供有关您的测试的有价值信息。Selenium WebDriver 的 TestNG 侦听器是侦听特定事件并在测试执行的每个阶段执行某些操作时跟踪测试执行的模块。

TestNG 侦听器是可用于侦听 TestNG 测试执行期间发生的事件的类。它们允许您向测试添加附加功能,并可用于执行范围广泛的任务,例如记录测试结果、生成报告或发送通知。通过使用@Listeners 注释对测试类进行注释并指定要使用的一个或多个侦听器类,可以在测试中实现侦听器。

TestNG 注释

注释首先添加到 JDK 5 中的 Java 语言。可以将 TestNG 注释添加到您的代码中,以控制 TestNG 如何执行您的测试。这些注释用于标识测试的不同组件,例如测试方法、组和配置。

TestNG 包含范围广泛的注释,可用于控制测试的各个方面,例如它们运行的顺序、执行它们的条件以及它们如何组织成组。

可以为不同的测试方法在代码中添加注释;有各种类型的注释。使用注释可以更轻松地管理和组织测试,并可以帮助您创建更易于维护和可靠的测试代码。

TestNG Reporter 登录 Selenium

TestNG 报告器日志是 TestNG 测试框架的一项功能,可让您生成有关 Selenium 测试执行情况的详细报告。报告器日志提供有关已运行测试的信息,包括通过和失败的测试数、运行每个测试所花费的时间以及抛出的任何异常或错误。

此信息对于了解您的测试结果和识别任何潜在的问题或问题非常有用。报告者日志可以帮助您更好地了解您的 Selenium 测试并提高测试代码的质量。

总体而言,TestNG Reporter Class 使我们能够在不依赖第三方软件的情况下创建信息丰富且有帮助的报告,从而提高效率和信息分析。

Jenkins 中的 TestNG 报告

TestNG 报告可以与 Jenkins 集成,以提供有关 Selenium 测试结果的更多见解和信息。Jenkins 是一种开源自动化服务器,可用于自动执行各种任务,包括构建、测试和部署软件。

通过将 TestNG 与 Jenkins 集成,您可以创建一个持续集成 (CI) 管道,该管道会在构建过程中自动运行您的测试并生成有关结果的报告。

要在 Jenkins 中使用 TestNG 报告,您需要配置插件,完成后,Jenkins 将自动为您的 Selenium 测试生成 TestNG 报告,作为构建过程的一部分,为您的代码质量提供有价值的见解。

标签:框架,Selenium,介绍,TestNG,测试,使用,运行
From: https://www.cnblogs.com/yunlong-study/p/18258550

相关文章

  • CAN通信(五)(CANFD介绍)
    目录九、CANFD1.介绍2.特点3.帧结构(1)帧起始(2)仲裁段(3)控制段(4)数据段(5)CRC段(6)ACK段(7)帧结束 4.如何从传统的CAN升级到CANFD?5.总结其他CAN文章:九、CANFD1.介绍       CANFD(控制器局域网灵活数据速率)是经典CAN协议的高级版本,旨在满足现代汽车和工业应用的......
  • linux常见特殊符号介绍
    ${}、$[]、$()的区别${}Shell中使用一个已经定义过的变量,只要在变量名前面加美元符号$即可。变量名外面的{}是可选的,只是为了帮助解释器识别变量的边界。str="java"echo"Iam$str"echo"Iam$s{str}Script"$[]是运算操作符,用于对整数进行数学运算echo$[3*5]#......
  • v-show 与 v-if:区别介绍与案例深度分析
    目录v-show、v-if区别v-if、v-else、v-else-if v-show、v-if区别        v-show通常仅会进行一次创建操作,之后主要通过css来实现对其显示与隐藏状态的控制。当进行切换按钮等相关操作时,v-show每次并不会重新去执行DOM的删除与创建动作,而仅仅是对元素的......
  • JavaScript介绍和基本用法
            JavaScript是一种编程语言,主要用于开发网站和Web应用程序。它是一种高级的解释型语言,允许开发人员为网站添加交互元素和动态内容。JavaScript经常与HTML和CSS一起使用,创建动态和交互式的网页。它被所有现代Web浏览器支持,并且也可以在服务器端(Node.js)上使用,用于......
  • 电阻介绍与相关电路分析
    目录#电阻类型介绍#常见电阻如何读取数值#LED电源指示灯的电阻选型#串联电路电阻分压分析#并联电路总电阻计算#拓展RC延时电路分析                               相关声明,本文仅供学习使用,参考文献,文章最后#电阻类型介绍   ......
  • 【云服务器介绍】选择指南 腾讯云 阿里云全配置对比 搭建web 个人开发 app 游戏服务器
    ​省流目录:适用于博客建站(2-4G)、个人开发/小型游戏[传奇/我的世界/饥荒](4-8G)、数据分析/大型游戏[幻兽帕鲁/雾锁王国]服务器(16-64G)1.京东云-618专属活动 官方采购季专属活动地址:京东云-618采购季服务器活动专区https://3.cn/20-J4jjX京东云又双叒降价了!活动页大改,增加两......
  • java内置的函数式接口介绍及使用举例
    lambda表达式的本质:作为函数式接口的实例如果在一个接口中,只声明了一个抽象方法,则此接口就被称为函数式接口,我们可以在一个接口上使用,@FunctionalInterface注解来验证该接口是否为函数式接口(吐过在该接口中写两个方法,则会编译失败)正是因为抽象方法中只有一个方法,所以我们才可以......
  • Memcached介绍和详解
    Memcached介绍和详解一、Memcached概述Memcached是一个开源的、高性能的、支持高并发的分布式内存缓存系统。最初由DangaInteractive为LiveJournal开发,用以应对其网站高并发访问的问题。Memcached以BSDlicense授权协议发布,并且由于其简单、高效和基于内存的存储方式,被众......
  • 【能力提升】SQL Server常见问题介绍及快速解决建议
    前言本文旨在帮助SQLServer数据库的使用人员了解常见的问题,及快速解决这些问题。这些问题是数据库的常规管理问题,对于很多对数据库没有深入了解的朋友提供一个大概的常见问题框架。下面一些问题是在近千家数据库用户诊断时发现的常规问题,本文分为【常见问题诊断流程】-......
  • C#/.Net 中的多线程介绍和最佳实践
    I/引言计算机中的线程CPU调度程序和时间切片进程和线程并发和并行性异步与多线程在C中使用多线程的好处#II线程C语言#线程生命周期创建、启动和暂停线程加入中止中断线程取消:停止线程的更好方法III/线程问题死锁和争用条件使用Join和LocksAutoRese......