TestNG框架自动化简述

发表于:2018-8-21 10:40

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:王党军    来源:博客园

  在做页面自动化测试的时候,有很多语言和框架可以选择,如语言有java,python,php,而框架有各种unittest框架,TestNG框架等等。先前我们介绍过WebDriver+python做页面自动化的教程,小伙伴们的热情挺高,博客访问量暴涨。
  那么问题就来了,有的同学开始学习的就是python,这样就比较容易上手,而有些儿同学学习的是java,也想学习自动化测试。WebDriver+java做页面自动也非常方便,下面我们就开始介绍,在TestNG框架下使用WebDriver+java来做页面自动测试。
  1.1   TestNG简介
  既然要用TestNG来做自动化测试,我们就需要先了解一下什么是TestNG?
  TestNG按照其文档的定义是:
  TestNG是一个测试框架,其灵感来自JUnit和NUnit的,但引入了一些新的功能,使其功能更强大,使用更方便。
  TestNG是一个开源自动化测试框架;TestNG表示下一代。 TestNG是类似于JUnit(特别是JUnit 4),但它不是一个JUnit扩展。它的灵感来源于JUnit。它的目的是优于JUnit的,尤其是当测试集成的类。 TestNG的创造者是Cedric Beust(塞德里克·博伊斯特)
  TestNG消除了大部分的旧框架的限制,使开发人员能够编写更加灵活和强大的测试。 因为它在很大程度上借鉴了Java注解(JDK5.0引入的)来定义的测试,它也可以告诉你如何使用这个新功能在真实的Java语言生产环境中。
  1.2   TestNG的特点
  TestNG的特点主要集中在以下几点:
  注解。
  TestNG使用Java和面向对象的功能。
  支持综合类测试(例如,默认情况下,没有必要创建一个新的测试每个测试方法的类的实例)。
  独立的编译时间测试代码运行时配置/数据信息。
  灵活的运行时配置。
  主要介绍“测试组”。当编译测试,只要问TestNG运行所有的“前端”的测试,或“快”,“慢”,“数据库”等。
  支持依赖测试方法,并行测试,负载测试,局部故障。
  灵活的插件API。
  支持多线程测试。
  1.3   TestNG的注释
  传统的方式来表示JUnit 3中的测试方法是测试自己的名字前缀。标记一个类中的某些方法,具有特殊的意义,这是一个非常有效的方法,但命名不很好的扩展(如果我们想添加更多标签为不同的框架?),而非缺乏灵活性(如果我们要通过额外的参数测试框架)。注释被正式加入到JDK 5中的Java语言和TestNG作出选择使用注释注释测试类。
  这里是TestNG的支持列表中的注解:
  (1)@BeforeSuite
  注解的方法将只运行一次,运行所有测试前此套件中。
  (2)@AfterSuite
  注解的方法将只运行一次此套件中的所有测试都运行之后。
  (3)@BeforeClass
  注解的方法将只运行一次先行先试在当前类中的方法调用。
  (4)@AfterClass
  注解的方法将只运行一次后已经运行在当前类中的所有测试方法。
  (5)@BeforeTest
  注解的方法将被运行之前的任何测试方法属于内部类的 标签的运行。
  (6)@AfterTest
  注解的方法将被运行后,所有的测试方法,属于内部类的标签的运行。
  (7)@BeforeGroups
  组的列表,这种配置方法将之前运行。此方法是保证在运行属于任何这些组第一个测试方法,该方法被调用。
  (8)@AfterGroups
  组的名单,这种配置方法后,将运行。此方法是保证运行后不久,最后的测试方法,该方法属于任何这些组被调用。
  (9)@BeforeMethod
  注解的方法将每个测试方法之前运行。
  (10)@AfterMethod
  被注释的方法将被运行后,每个测试方法。
  (11)@DataProvider
  标志着一个方法,提供数据的一个测试方法。注解的方法必须返回一个Object[] [],其中每个对象[]的测试方法的参数列表中可以分配。
  该@Test 方法,希望从这个DataProvider的接收数据,需要使用一个dataProvider名称等于这个注解的名字。
  (12)@Factory
  作为一个工厂,返回TestNG的测试类的对象将被用于标记的方法。该方法必须返回Object[]。
  (13)@Listeners
  定义一个测试类的监听器。
  (14)@Parameters
  介绍如何将参数传递给@Test方法。
  (15)@Test
  标记一个类或方法作为测试的一部分。
  使用注释的好处:
  TestNG的标识的方法关心寻找注解。因此,方法名并不限于任何模式或格式。
  我们可以通过额外的参数注解。
  注释是强类型的,所以编译器将标记任何错误。
  测试类不再需要任何东西(如测试案例,在JUnit3)扩展。
  1.4 WebDriver简介
  做页面自动化不可能不知道WebDriver,也就是我们常说的Selenium2.0。Selenium 2.0主要的特性就是与WebDriver API的集成。WebDriver旨在提供一个更简单,更简洁的编程接口以及解决一些Selenium-RC API的限制。Selenium-Webdriver更好的支持页面本身不重新加载而页面的元素改变的动态网页。WebDriver的目标是提供一个良好设计的面向对象的API,提供了对于现代先进web应用程序测试问题的改进支持。
  WebDriver通过大量的API函数来模拟用户操作,从而组合各种测试用例。对于其基本原理在此就不多讲了,针对不同的脚本语言,WebDriver提供了不同的API,不过大致是相通的,后面我们将具体讲述.
  1.5 本章小结
  本章我们介绍了TestNG框架的相关知识点,TestNG框架可以很好地帮我们完成WebDriver+java的页面自动化工作。通过各种注释的灵活运行,可以使你的测试用例更加完美,定制符合要求的测试用例。最后我们简单地介绍了一下WebDriver,这个是做自动化测试的同学非常熟悉的。从Selenium1.0而后升级到WebDriver,框架功能越来越强,我们的自动化测试工作也就变的相当来说容易了许多。加上这个框架是开源的,我们可对其进行二次开发,开发出符合我们需求的自动化测试工具。
  上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号