TestNG 是一个开源的自动化测试框架,其灵感来自 JUnit 和 NUnit,但它引入了一些新功能,使其功能更强大,更易于使用。TestNG 的设计目标是能够被用于进行各种类型测试:单元测试、功能测试,端到端测试、集成测试,等等。NG 是 Next Generation 的简写,表示下一代,意在表示其产生的目的是要超越当前所有测试框架。TestNG 类似于 JUnit(特别是 JUnit 4),但它不是 JUnit 的扩展,而是独立的全新设计的框架。TestNG 的创造者是 Cedric Beust(塞德里克·博伊斯特)。
对于大多数刚接触自动化测试同学来说,Selenium是大家接触最早的Web UI自动化测试框架,Selenium是一个开源的和便携式的自动化软件测试工具,用于测试Web应用程序有能力在不同的浏览器和操作系统运行。Selenium其实是一套工具,帮助测试者更有效地基于Web的应用程序的自动化。
通过TestNG环境搭建(一)的TestNG的环境搭建,以及测试用例的执行,可以很清晰的看到,使用testng.xml的文件可以来指定要被执行的测试用例,这里面就包含了测试类,测试方法,以及其他的信息。在本文章中,针对testng.xml文件进行系统详细的总结下。
TestNG使用注释来帮助开发人员编写测试。了解TestNG提供的所有注释及其简要说明。
软件开发经历了许多阶段,如需求收集和分析、设计、软件开发、测试和发布。测试是 SDLC 不可或缺的一部分,单元测试是一种可靠的测试类型。像 JUnit 和 TestNG 这样优秀的单元测试框架已经成为主流选择,但是关于 TestNG 与 JUnit 的差异的争论一直存在。
TestNG的简单使用 TestNG(Test Next Generation)是一个测试框架,其灵感来自JUnit和NUnit,但同时引入了一些新的功能,使其功能更强大,使用更方便。 TestNG是一个设计用来简化广泛的测试需求的测试框架,涵盖单元测试到集成测试 支持依赖测试方法,并行测试,异常测试、参数化测试、时限测试、分组测试等测试方法 基于Annotation机制,使测试方法更为灵活配置 引入xml配置文件,从而使软件测试不仅仅是硬编码到程序中,做到更为灵活 支持多线程测试 编写TestNG测
前面一篇《单元测试框架系列教程1-TestNG简介》,介绍了TestNG的特点和官网地址,以及在IDEA上的配置过程。这篇,我们就来动手写一个基于TestNG的测试代码,或者叫测试用例。
一.返回类型是Iterator<Object[]>,不用管有多少组测试数据,可以抽取出来以map的id为参数作为公用的提取数据方法。
在前面的文章中详细的演示了TestNG测试框架的安装以及基本的应用,和testng.xml配置文件的应用,在本次文章中系统详细的概述TestNG框架中的注释,在Python里面这样的注释可以理解为装饰器。这些知识点主要涉及具体为:测试前和测试后,参数化,注释测试,禁用测试,异常测试,时间测试,以及把测试数据传递到测试方法中。下面结合具体的实际案例和具体的案例实战,从各个不同维度来演示各个知识点的应用。在Java5中引入了注释的功能,比如一个类集成了Thread类,在编写run方法的时候就会引入@Override,当然还有其他的案例。在TestNG的框架中,更多体现在测试执行前和测试执行后,我们在讲解单元测试框架的时候说过,一个完整的测试框架,它首先就得具备测试执行前的初始化以及测试执行后的环境清理。在TestNG框架中,这些点主要会包含在针对类,以及针对测试方法。我们先来看Before和After的应用,也就是说测试套件,测试类,测试用例,测试方法,具体案例源码如下:
TestNG是一个开源自动化测试框架,“NG”表示下一代(Next Generation的首字母)。 TestNG类似于JUnit(特别是JUnit 4),但它不是JUnit框架的扩展,相较于Junit而言,功能更强大,使用起来更加方便,比较适合测试人员来进行集成测试或是接口回归测试。
@Test注解上可通过配置threadPoolSize来实现并发,threadPoolSize和invocationCount是结合使用的,当invocationCount=1的时候,threadPoolSize没有意义。invocationCount表示方法被调用的次数,如果不配置threadPoolSize,该方法会被顺序执行5次,如果配置threaPoolSize=4,下图所示的方法会一次以4个线程并发执行,缩短执行时间。
2、执行脚本(GroupsOnMethod鼠标右键Run As--->TestNG Test)。
TestNG是Test Next Generation的缩写,它的灵感来自于JUnit和NUnit,在它们基础上增加了很多很牛的功能,比如说:
在实际测试中,为了节省测试时间,提高测试效率,在实际测试场景中经常会采用多线程的方式去执行,比如爬虫爬数据,多浏览器并行测试。
首先我们来理解什么是工厂注释,以及它能够给结合TestNG测试框架能够给测试效率带来什么样的效率提升。我们在之前的文章体系中分享了TestNG框架中的组以及依赖,本章节接着讲工厂注释这部分是强大功能。所谓工厂注释可以理解为我们在实际的测试过程中会经常遇到一组具有不同测试数据的测试用例来执行,因此我们可以在TestNG的配置文件中指定单独定义一个测试套件,这样的方式处理起来比较麻烦,而且数据定义在testng.xml配置文件中总感觉显得比较奇怪,也不符合数据驱动的思想和模式,因此我们可以使用@Factory解决这个问题,具体先看如下的案例代码,测试类SimpleTest.class的源码:
其实前边好像简单的提到过测试报告,宏哥觉得这部分比较重要,就着重讲解和介绍一下。报告是任何测试执行中最重要的部分,因为它可以帮助用户了解测试执行的结果、失败点和失败原因。另一方面,日志记录对于密切关注执行流程或在出现任何故障时进行调试很重要。默认情况下,TestNG 会为其测试执行生成不同类型的报告。这包括一个 HTML 和一个 XML 报告输出。TestNG 还允许其用户编写自己的报告程序并将其与 TestNG 一起使用。还有一个选项可以编写自己的记录器,TestNG 在运行时会通知这些记录器。
原文:http://websystique.com/java/testing/testng-suites-example/
原文地址:http://websystique.com/java/testing/testng-groups-example/
原文地址:http://websystique.com/java/testing/testng-hello-world-example/
熟悉Pytest测试框架的同学应该清楚,在Pytest测试框架中使用装饰器的方式,以及使用命令行k,可以指定执行的组,首先我们来思考,为什么需要组,需要组的最核心的原因是在实际的测试中,我们的测试用例会非常非常多,但是这些测试用例依据分类我们可以把它分为组,这样我们只根据自己的诉求来分组执行就可以了,比如只执行用户管理模块的测试用例,其他的功能测试用例都不执行,那么我们可以把用户管理放到一个组来执行。分组测试方法是 TestNG 最重要的功能之一。在 TestNG 中,用户可以将多个测试方法分组到命名组中。您还可以执行属于组或多个组的特定测试方法集。此功能允许将测试方法隔离到不同的部分或模块中。例如,您可以拥有一组属于理智测试的测试,而其他人可能属于回归测试。您还可以根据测试方法验证的功能/功能来隔离测试。这有助于仅执行一组特定的测试,并需要。让我们创建一些属于特定组的测试。下面我们依据案例来演示这部分的应用,案例代码如下:
在Java的编程语言中,单元测试框架早期主要使用的为Junit,后面产生了TestNG的单元测试框架,那么具体怎么理解TestNG测试框架了?TestNG测试框架可以理解为下一代单元测试框架。或者更加官方的说,就是:NG代表的是下一代的含义,设计TestNG的灵感来自Junit的设计思想,单元测试框架可用于单元测试,以及自动化测试(UI自动化测试和接口自动化测试),以及集成测试和端到端的测试。TestNG在很短的时间内就得到了普及(目前也是各个公司招聘测试必须要具备的单元测试框架之一的一个框架)。它主要使用Java的注解来配置和编写测试用例。在TestNG的测试框架中,具备了前置测试条件和后置测试条件的处理,依赖性测试,测试分组性的测试,参数化的测试,多线程执行,以及可以和Allure整合后的测试报告,当然它本身就内置了测试报告。TestNG主要是通过XML配置文件来指定被需要执行的测试套件(测试类以及测试方法),默认的情况下,文件名称为testng.xml,当然我们可以自定义成其他的名字,但是我个人建议还是使用默认的名字比较好,这样更加具备通用型。TestNG测试框架的特点可以具体描述为:
TestNG是Test Next Generation的缩写,如果说在测试界TestNG是第一测试框架,那么很难有第二个测试框架能跟它一比高下。在Java自动化领域,TestNG更是已经成为行业标配了。TestNG无人不知无人不晓,但是对它有深入了解的,还是比较少的。本系列文章就跟随着官方文档的步伐,由浅入深地对TestNG进行全方面的学习。
上一篇文章中,从TestNg的特点我们知道支持变量,那么我们这一篇就通过变量参数来启动不同的浏览器进行自动化测试。那么如何实现同时启动不同的浏览器对脚本进行测试,且听宏哥娓娓道来。
本篇来介绍Test Methods, Test classes ,Test groups的基本概念。了解这三个基本概念,有助于我们学习其他的功能。前面介绍了@Test下的before和after属性,其中就有beforeMethods和afterGroups等。
这个系列文章,我们来系统地学习下Java编程语言中,比较流行的单元测试框架TestNG。因为Junit比较老,过时了,所以这里选择了TestGN,而且,TestNG的功能比Junit更加强大。还有一点可以就是TestNG的设计模式或者特点,很好地符合我们测试的思维逻辑,甚至很多时候,我们有些测试设计需要参考TestNG的思想去帮助我们来测试。
TestNG 是一个受 JUnit 和 NUnit 启发的测试框架测试框架,旨在简化广泛的测试需求,从单元测试到接口测试。 但引入了一些新功能,使其更强大,更易于使用,例如:
myeclipse-10.0-offline-installer-windows.exe
最近忙着装修博客园,没时间更新文章,今天终于抽出时间把上次写的一半的文章给写完了,新的博客园风格,希望大家喜欢。今天继续介绍testng的相关知识--工厂。
在Java的世界里,TestNG是一个非常受欢迎的高级测试框架,它不仅继承了JUnit的优点,还引入了许多新功能,如支持数据驱动测试、参数化测试、依赖测试、并行测试等,极大地提高了自动化测试的效率和灵活性。本文旨在深入浅出地介绍TestNG的核心特性、常见问题、易错点以及如何避免这些错误,同时附上实用的代码示例。
原文地址:http://websystique.com/java/testing/testng-annotations-example/
在本期中,给大家分享一下TestNG测试框架的基础知识,使用TestNG的优点,TestNG的基本注解如何使用,套件、忽略、异常、依赖、参数化、超时等测试该如何进行。
TestNG的官方文档请见: http://testng.org/doc/documentation-main.html 1. 介绍 TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试(隔离测试一个类)到集成测试(测试由有多个类多个包甚至多个外部框架组成的整个系统,例如运用服务器)。 编写一个测试的过程有三个典型步骤: * 编写测试的 业务逻辑并在代码中插入TestNG annotation * 将测试信息添加到testng.xml文件或者build.xml中 * 运行TestNG 在欢迎页面上可以找到快速入门示例。 下面是这篇文档使用的概念: * suite由xml文件描述。它包含一个或多个测试并被定义为<suite>标签 * test由<test>描述并包含一个或者多个TestNG类 * TestNG类是包含至少一个TestNG annotation的java类,由<class>标签描述并包含一个或多个测试方法 * 测试方法是源文件中带有@Testd注释的java方法 TestNG测试可以被@BeforeXXX 和 @AfterXXX annotations配置,容许在特定点的前后执行一些java逻辑,这些点上面已经列出。 这份手册的剩余部分将讲述以下内容: * 所有的annotation列表并带有简短说明,为TestNG的多种功能性提供参考, 你可能需要参考为每个annotation提供的代码片段来学习细节。 * testng.xml文件描述,它的语法和如果指定它。 * 多个特性的详细列表和怎样结合annotation和testng.xml来使用它们 ******************************************************************************* 注:上面的内容很简短,但是请注意其中的一些细节。 1. TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试到集成测试 这个是TestNG设计的出发点,不仅仅是单元测试,而且可以用于集成测试。设计目标的不同,对比junit的只适合用于单元测试,TestNG无疑走的更远。 可以用于集成测试,这个特性是我选择TestNG的最重要的原因。 2. 测试的过程的三个典型步骤,注意和junit(4.0)相比,多了一个将测试信息添加到testng.xml文件或者build.xml 测试信息尤其是测试数据不再写死在测试代码中,好处就是修改测试数据时不需要修改代码/编译了,从而有助于将测试人员引入单元测试/集成测试。 3. 基本概念,相比junit的TestCase/TestSuite,TestNG有suite/test/test method三个级别,即将test/test method明确区分开了。 junit中的TestCase将test/test method混合,比较容易让人概念不清晰,尤其是新手。
TestNG 和 Junit 作为两大流行的测试框架,有哪些区别?各有哪些优缺点?该如何选择呢?这里简要总结下:
应用场景:将通用的功能抽取并封装起来,在方法中使用注解@BeforeSuite和@AfterSuite,在测试类中继承这个类,测试类在运行前会先运行@BeforeSuite注解的方法,测试类在运行后会运行@AfterSuite注解的方法
每个CASE都不是独立的,这就像同步任务一样,总得有个顺序的过程,自动化测试尤其如此,为什么这样说了?每个测试用例都不是独立的,都会涉及到不同业务场景之间的关联。再举一个更加简单的案例,就是HTTP的交互,在API的自动化测试中,我们对一个系统的操作,首先是要进入到这个系统,那么我们就需要获取登录成功后的的token信息,我们才能够对系统做一系列的操作。当然这样的案例还是有很多的。让我们庆幸的是作为主流的测试框架TestNG它提供的这样的能力,这样我们就可以很完美的在业务中进行整合和应用。在TestNG的框架中,依赖还是在两个维度来展开,一个是测试用例之间的关系,另外一个是我们可以通过testng.xml配置文件来实现我们的诉求。 我们先来看依赖性的测试,行代码的角度来深度了解依赖性测试到底是什么,案例代码如下:
TestNG为日志记录和报告提供的不同选项。现在,宏哥讲解分享如何开始使用它们。首先,我们将编写一个示例程序,在该程序中我们将使用 ITestListener方法进行日志记录。
在执行自动化测试脚本的时候,我们需要自动判断测试脚本执行完成后的实际结果是否与预期结果一致,这个时候就需要在程序运行之前写入断言,判断当前程序执行后是否正常。
单元测试是软件开发中的重要环节,它帮助我们确保代码的正确性和稳定性。本文将介绍两种常用的Java单元测试框架:JUnit和TestNG,并讨论一些常见问题、易错点及如何避免它们。
TestNG还为我们提供了测试的记录功能-日志。例如,在运行测试用例期间,用户希望在控制台中记录一些信息。信息可以是任何细节取决于目的。牢记我们正在使用Selenium进行测试,我们需要有助于用户理解测试步骤或测试用例执行期间的任何失败的信息。在TestNG Logs的帮助下,可以在Selenium测试用例执行期间启用日志记录。
上一篇中介绍了DataProvider如何传递参数,以及和一些其他方法结合传递参数,今天宏哥接着把剩下的一些常用的也做一下简单的介绍和分享。
原文地址:http://websystique.com/java/testing/testng-enabled-example/
● TestNG是一个测试框架,其灵感来自Junit和NUnit的,但引入了一些新功能,使其功能更强大,使用更方便。
2、执行脚本(TimeOutTest鼠标右键Run As--->TestNG Test)。
上一篇讲解了依赖测试的各种方法,今天继续讲解依赖测试的方法,这一篇主要是讲解和分享通过xml文件配置组名依赖方法( 主要是测试组的用法)。废话不说,直接上干货。
前面文章细心的小伙伴会发现宏哥在运行测试用例的时候有的是在main方法下,而有的不需要用main方法去执行用例,那么为什么有的就不需要在main方法下就能够成功运行测试用例了。这就需要单元测试框架的支持,这篇宏哥就来简单介绍TestNG单元测试框架的安装和基本使用。
这个章节我们主要回来介绍下测试脚本批量执行,在实际项目过程中我们有可能需要指定测试脚本的执行顺序以及执行哪些测试脚本,这里我们会借助TestNG的suite来完成。
领取专属 10元无门槛券
手把手带您无忧上云