一.TestNG 是什么 ?

  • 脱胎于业界标杆的Junit,并超于Junit,主要原因是由于当时的JUnit3版本不支持annotation,使用不够灵活。
  • TestNG不再需要test前缀的命名方式、支持数据驱动、用例分组等一系列特性完全碾压Junit。
  • JUnit也在不断的吸纳TestNG和其他的思想和技术,目前主要的功能已经基本都能支持。
  • Annotation:
     注解种类
    Beforexxxx系列,在Test之前执行的动作。
    Afterxxxx系列,在Test之后执行的动作。
    DataProvider,数据驱动类。
    Test,测试执行的主体。
    Parameters,接收配置文件中同名参数到代码中使用。
    注解使用
    直接在任意方法上加@注解名,对方法名字、参数类型没有要求。
    需要@Test方法作用域为public。

二.搭建TestNG环境

  • 新建Maven项目, 在pom文件中写入依赖。 就完成了环境的配置,就这么简单。

  • PS:Intellij自带了TestNG插件,如使用的是Eclipse,需手动安装TestNG插件。

三.使用@Test做一次最简单的测试任务

  • 直接上代码,只需要在需要执行的测试代码上加上@Test注释即可

  • 执行时,只需在这个java文件上右键,选择Run Task3 即可。

  • 执行完成后,会出现下图执行结果:

四.加入断言,进行数据正确性校验

执行结果:

五.加入@BeforeTest和@AfterTest动作

执行结果:

六.再试试多种@BeforeXXX和@AfterXXX

执行结果:

七.参数化一组数据

  • 以Object[][]的形式,让TestNG对一组数据进行测试,并校验。

  • 执行结果会是这样:

  • 或者是这样:

八.再用一种方式参数化一组数据

  • 这次我们把数据存储在了Excel中:

执行结果:

  • 这样就实现了数据与脚本分离。

九.使用数据库的数据作为一组参数

  • 使用的SQL是:SELECT * FROM ServiceAPI_InfoRecords;

  • 由于执行的数据是由SQL语句进行的筛选,所以另我们的测试数据又变得更加灵活。
  • 比如使用下面这句SQL语句: SELECT * FROM ServiceAPI_InfoRecords WHERE isTest=1。
  • 执行结果和想象的一样,只会执行1和3

十.编写测试配置文件

  • Testng.xml是一个以xml记录所有测试的文件。这个文件能够很容易地再一个文件中描述所有测试套件和它们的参数,可以将它签入到代码库中,或者通过电子邮件发送给同事。也可以很容易地提取测试的子集,或分成几种运行时配置。
  • 如上面这个例子,它所做的就是执行Task10

十一.配置文件中使用参数传递

  • 在配置文件中,使用parameter标签来完成参数传递动作

  • 执行结果为test1,2,3,1,3

十二.做好测试方法的依赖关系

  • 如下代码:doTest3依赖doTest2,doTest2又依赖doTest1。

  • 所以当doTest2执行错误后,由于doTest3依赖doTest2,所以doTest3被忽略了。

十三.测试分组

  • 使用注释的方式,标记好每个测试的分组

  • 很好的根据自己的需要,执行对应的分组测试

十四.生成报告

  • TestNG本身就自带了报告,一个是很丑,另一个是使用了一些墙外的东西(你懂的),墙内打开报告页面至少得一分钟。
  • 然后我选择使用的ReportNG。在一开始的PPT中,我们已经把ReportNG的依赖添加完成了,所以这里只需要在*.xml 文件里增加报告的侦听就行了。

  • 在代码中,很显然使用System.out.println();是无法将信息打印至报告中的。所以,需要TestNG的log打印方式:Reporter.log("XXXXXXXX")。
  • 执行测试后,生成的报告是这样的:

十五:场景

当我们有了这把利器之后,我们可以用在很多场景上。比如:

  • 开发进行单元测试
  • 测试进行各种自动化测试
  • WEB UI自动化测试(如 Selenium WebDriver)
  • APP UI 自动化测试(如 Appium)
  • 接口自动化测试

十六.测试用例结果有错误后。。。

  • 肯定是需要定位出错的原因。
  • 是真的出错了,还是当时环境的不稳定之类的意外情况引起的?
  • 所以我们最常的做法是:把错误的用例再执行一遍,会自动生成testng-failed.xml,里面记录的就是执行失败的用例,可直接执行。

十七.其它

  • 完成上述任务并能活用的话,在日常的测试工作中,使用用TestNG便没有什么太大的问题了。
  • 当然,TestNG还有诸如“并发”、“扩展”等任务,待学习研究

TestNG的更多相关文章

  1. TestNG 入门教程

    原文出处:http://www.cnblogs.com/TankXiao/p/3888070.html 阅读目录 TestNG介绍 在Eclipse中在线安装TestNG 在Eclipse中离线安装T ...

  2. JUnit 4 与 TestNG 对比

    原文出处: 付学良的网志 原文出处2: http://www.importnew.com/16270.html -------------------------------------------- ...

  3. JAVA+Maven+TestNG搭建接口测试框架及实例

    1.配置JDK 见另一篇博客:http://www.cnblogs.com/testlurunxiu/p/5933912.html 2.安装Eclipse以及TestNG Eclipse下载地址:ht ...

  4. Idea+TestNg配置test-output输出

    说明:testNG的工程我是使用eclipse创建的,直接导入到idea中,运行test时不会生产test-output,只能在idea的控制台中查看运行结果,然后到处报告,经过不懈的百度终于找到怎么 ...

  5. testng 失败自动截图

    testng执行case failed ,testng Listener会捕获执行失败,如果要实现失败自动截图,需要重写Listener的onTestFailure方法 那么首先新建一个Listene ...

  6. 两种方式testng dataprovider结合csv做测试驱动

    方式一: 第一.读取csv数据源码 import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream ...

  7. java分享第十九天(TestNg的IReporter接口的使用)

     IReporter接口是干嘛的?就是让用户自定义报告的,很多人想要自定义报告,于是乎找各种插件,比如什么testng-xslt啊,reportng啊,各种配置,最后出来的结果,还不能定制化,但为什么 ...

  8. java分享第十八天-02( java结合testng,利用XML做数据源的数据驱动)

    testng的功能很强大,利用@DataProvider可以做数据驱动,数据源文件可以是EXCEL,XML,YAML,甚至可以是TXT文本.在这以XML为例:备注:@DataProvider的返回值类 ...

  9. java分享第十四天(TestNG Assert详解)

     TestNG Assert 详解org.testng.Assert 用来校验接口测试的结果,那么它提供哪些方法呢? 中心为Assert测试类,一级节点为方法例如assertEquals,二级结点为参 ...

  10. TestNG Assert 详解

    org.testng.Assert 用来校验接口测试的结果,那么它提供哪些方法呢? 中心为Assert测试类,一级节点为方法例如assertEquals,二级结点为参数类型及参数个数,double 3 ...

随机推荐

  1. October 23rd Week 44th Sunday 2016

    When ambition ends, happiness begins. 野心消亡之日,正是快乐破茧之时. No ambition, no annoyance. No ambition, no ac ...

  2. Core Data使用

    注意:每次修改CoreData的Attribute时记得把应用给删除重装,要不会崩,因为建立的数据库文件还在该目录下,里面的字段没有更改,所以不能匹配就会崩溃,切忌,要不就每次进来把文件先删除,再建立 ...

  3. PHP文件上传相关

    1.必须通过POST提交 2. 声明 enctype="multipart/form-data"   $_FILES {[pic]=array ( [name]=>     ...

  4. Yii2 用户登录

    在Yii2的basic版本中默认是从一个数组验证用户名和密码,如何改为从数据表中查询验证呢?且数据库的密码要为哈希加密密码验证? 下面我们就一步一步解析Yii2的登录过程. 一. 创建user表模型 ...

  5. win10中将默认输入法设置为英文

    开始 设置 时间和语言 区域和语言 语言--中文--选项 微软拼音输入法--选项 IME默认模式--英语

  6. Oracle协议适配器错误解决办法

    在Oracle中新建了一个数据库,今天把它删了之后再登录SQL*PLUS就登不上去了,出现ORA-12560:TNS:协议适配器错误. ORA-12560: TNS: 协议适配器错误的解决方法 造成O ...

  7. UDP协议开发

    UDP是用户数据报协议(User Datagram Protocol,UDP)的简称,其主要作用是将网络数据流量压缩成数据报形式,提供面向事务的简单信息传送服务.与TCP协议不同,UDP协议直接利用I ...

  8. [工作中的设计模式]责任链模式chain

    一.模式解析 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理此请求.发出这个请求的客户端并不知 ...

  9. 分配问题与Hungarian算法

    分配问题与Hungarian算法 分配问题 指派问题 匈牙利算法 匈牙利方法是一种能够在多项式时间内解决分配问题(assignment problem)的组合优化算法.它由Harold Kuhn 与1 ...

  10. 1.0 多控制器管理(附:Demo)

    本文并非最终版本,如有更新或更正会第一时间置顶,联系方式详见文末 如果觉得本文内容过长,请前往本人 “简书”       控制器 :   一个iOS的app很少只由一个控制器组成,除非这个app极其简 ...