首页 > TestNG学习随笔

TestNG学习随笔

转载自:http://blog.sina.com.cn/s/blog_68f262210102vh5c.html

  通过本人实践,文中所讲的程序可以正确运行,作用正确,并且浅显易懂。以下就是我从中摘录的重要知识点,就当留作自己记录或者帮助其他想学TestNG的人一点借鉴吧!若其中有哪里不正确,请留言指出,谢谢!~另外,如若有侵权的地方,请联系本人,得到通知后立刻撤下,再次感谢!~

  一、TestNG简介

    这个网上一搜一大堆,这里就不细说了。官方定义:TestNG是一个测试框架,其灵感来自JUnit和NUnit,但引入了一些新的功能,使其功能更强大,使用更方便。

  二、为什么使用TestNG

    这个我觉得就没必要说了,大家既然能看到这篇博客,说明就已经打算使用TestNG了,总之就是优点多多 -_-

  三、TestNG的配置

    已经确定使用TestNG了,那现在就开始配置它吧。

    首先,需要明确的是,我使用的是Eclipse

    1.安装TestNG插件

      在Eclipse中点击help-->install new software...

      然后,点击add按钮,输入Name(内容随意填写)和Location(填写http://beust.com/eclipse),点击ok

      

      选中加载出来的TestNG选项,然后一路Next

        

      最后,来验证一下是否已经成功安装TestNG。大家可以新建一个工程,然后点击file-->new-->Other,看看里面有没有TestNG的选项,如果有,就说明已经成功安装了。

      

     2.准备相关jar包(注意:版本号可以不一致,但是尽量使用最新的jar包)

      

  四、编写测试用例

    终于到了最期待的环节了。。。

    1.新建一个java project,并且将上面下载的相关jar包附加到工程中

    2.规范代码

       

      <1>CommonFunction:里面用于存放所有的共用函数;方便之后所有的测试用例来调用,此包中的代码需要专人来维护,用作工具包

      <2>TestCases:里面用于存放具体的测试用例;用于测试

      <3>TestData:里面用于存放测试数据,里面的文件均为xml格式

      <4>testng.xml:用于组织测试用例,以及进行相关设置

      <5>lib:用于存放saxon-8.7.jar,后面会进行说明,此处可以忽略,后面会讲到

      <6>build.xml:里面是为了对testNG测试报告进行二次加工,此处可以忽略,后面会讲到

    3.创建TestNG文件

      new-->Other-->TestNG,选择@BeforeTest、@AfterTest,并且在XML suite file:处填写testng.xml,点击finish

      

    4.编写测试代码

      

      写完后,右键HelloWorld.class文件,点击run as-->TestNG Test。

      运行结果是:

      

 

      这段代码主要是为了了解在程序运行过程中,@BeforeTest、@AfterTest这些方法先后的执行顺序,当然,除了这些Annotations,还有其他的,在这里,我们先介绍这两个,有兴趣的朋友可以在新建TestNG文件时,在Annotations里的方法全部选中,运行一遍,试试看效果如何。

      我们通常吧变量定义或者是对测试用例的前置操作放到beforeTest()函数中,而对测试产生的数据清除或是关闭浏览器等操作放到afterTest()函数中。

      以上编写的测试用例仅仅只是最简单的测试用例,如果我们想结合浏览器,实现自动打开浏览器,输入指定的网址,进行指定的操作,则就需要用到WebDriver,下面,我们继续对这个测试用例进行编辑。

       我们把刚才f()方法里的System.out.println("Hello World!");语句注释掉,写下如下代码:

      

      上边代码的意思是:打开火狐浏览器,输入百度网址,跳转到百度暂停5秒后关闭浏览器。

      需要注意的是,如果仅仅输入上面的语句,是会报一个关于“geckodriver”的错误的,此时,我们需要在网上下载一个geckodriver.zip包,下载下来解压后,得到一个geckodriver.exe文件,在WebDriver driver = new FirefoxDriver();前面加入如下代码:

      

      其中,第一句中方法的第二个参数写入的是你存放geckodriver.exe的目录位置,注释掉的语句则分别代码打开的浏览器不同(IE和Chrome),此时,再次运行程序,则不会看到报错信息了。

      注意:如果你使用火狐浏览器,仍报错,则下载安装一个54.0版本的火狐浏览器,再重新试一下。

    此时,我们已经完成了TestNG的最基本的使用!下面,我们将会再这个基础上,再深入一点继续学习!

  五、TestNG进阶

    在学习后面的内容之前,请先学习了解一下另外一篇文章里的内容:http://www.cnblogs.com/zhangfei/archive/2012/10/09/2717043.html

    而我们则是通过读取TestData下的文件(HelloWorld.xml)来使用@DataProvider传递数据

    1.首先,我们先在CommonFunction包中新建DataProvide.java文件,里面代码如下:

      

      里面init方法的意思就是传入一个文件名,然后通过这个方法,把这个xml文件转化为一个dom文件,并返回给一个document对象。而providerMethod方法的意思则是为后面使用者提供数据,其中需要注意的是,方法前面必须使用@DataProvider注明,如果不写后面括号里的内容也可以,系统默认name值为方法名。method则代表调用providerMethod这个方法的当前方法。只要是被DataProvider标明的方法,都必须有一个Object[][]的返回值,而此处返回了一个Document对象。

    2.其次,我们仍在CommonFunction包中新建另外一个java文件---DataReader.java,里面的代码如下:

      

      其中,readnodevalue方法的作用就是根据传入的document对象、firsttag、secondtag,来得到最终指定节点里面的文本内容。

    3.再次,在TestData中新建HelloWorld.xml文件,里面代码如下:

      

      我们最终要得到的就是“Webdriver”这个内容。

    4.最后,我们修改HelloWorld.java文件

      

      这个文件中,需要注意的是,在f()方法前面,我们加上了@Test(dataProvider="Test_xml_dataprovider"),代表接收name为Test_xml_dataprovider的DataProvider提供过来的数据;在f()方法也变为了f(Document params);WebDriver相关的操作应该也都可以看懂吧?先在beforeTest函数中解析HelloWorld.xml文件,然后再打开了火狐浏览器,进入百度页面,根据ID先找到百度的输入框,然后点击这个输入框,调用readnodevalue方法,得到“WebDriver”这个文本,填写到输入框中,等待2秒后点击搜索,再等待5秒,检查搜索结果中是否有和搜索内容一致的文本,最后在afterTest函数中退出浏览器。

    5.最最后,testng.xml的编写

      常用的参数:

      

      详细讲解,请参考:http://www.cnblogs.com/choosewang/articles/3079983.html,而各个参数的具体取值及结构,可以参考:http://testng.org/testng-1.0.dtd.php。

      默认Testng的样子

      

      <1>Suite name 标识测试集的名字,这个名字会在测试报告中显示。

      <2>Suite parallel 是否并行运行测试用例,这个在多线程中会用到,false 为不允许多线程。

      <3>Test name 测试工程的名字,一个测试工程可以包含多个测试类,一个测试类中可以包含多个测试方法。

      <4>通常我们添加测试方法的办法是添加 classes 节点,当然也可以添加更多的测试工程和测试集。

      哪些测试方法需要执行和哪些测试方法不需要执行:

        

      详细的Testng.xml节点,请参考:http://blog.csdn.net/five3/article/details/25907693

      我们现在的Testng.xml代码如下:

        

      当然,需要在TestCases包下再新建几个java文件(HelloTom,HelloJim,HelloCate),里面的方法可以参考如下代码:

        

      至此,我们可以右击testng.xml-->run as-->run configurations,在Test标签里选择Suite,并且选中自己新建的Testng.xml文件,点击run,即可开始测试。

        

      运行的测试报告在测试代码的根目录下生成一个test-output,里面有一个index.html,可以查看,但是很不美观,不利于查看,所以我们需要利用第三方 TestNG-xslt优化一下测试报告。

      <1>下载TestNG-xslt并把其中的saxon-8.7.jar复制到测试项目lib下(此处就是文章开头介绍目录时提到的lib目录),并附加到工程中

      <2>从你下载的包中拷贝文件 testng-results.xsl 到 test-output 目录下。testng-results.xsl 文件的位置是testng-xslt-1.1.1/src/main/resources

      <3>新建build.xml文件(文章开头提到的),里面代码如下:

        

      <4>右击build.xml,点击run as-->External Tools Configurations,在Targets标签里勾选transfo...,点击run

        

      此时,再次点击test-output下的index.html,就会看到美观的报告啦!!!

    5.此时,最终效果达成了!~

 

  

 

      

 

 

 

 

 

 

 

      

 

 

 

 

 

 

 

    

 

      

 

 

   

 

转载于:https://www.cnblogs.com/FruitBoy/p/8480423.html

更多相关:

  • Intellij IDEA解析jacoco结果文件的方法JaCoCo经常用来分析代码覆盖率,最方便的当然是在Jenkins中集成,能很定时分析代码覆盖率并查看变化情况。如果需要单独查看某一模块中的覆盖率,则可以借助IntelliJ IDEA。一、设置修改用Idea打开对应的项目代码,右上角编辑设置。将代码覆盖的runner修改为jac...

  • 前两天写了一篇关于《阿里Java开发手册中的 1 个bug》的文章,评论区有点炸锅了,基本分为两派,支持老王的和质疑老王的。首先来说,无论是那一方,我都真诚的感谢你们。特别是「二师兄」,本来是打算周五晚上好好休息一下的(周五晚上发布的文章),结果因为和我讨论这个问题,一直搞到晚上 12 点左右,可以看出,他对技术的那份痴迷。这一点我们...

  • 现在的以太网测试仪多数应用于以太网专线及NGN网络,多业务城域网络等各种测试环境。以太网测试仪表提供了强大的分析、统计和处理功能、支持符合IEE802.3标准的10/100/1000Mbps RJ45电口和波长可选的1000Mbps等等,可以用于线缆测试、以太网误码(一、二、三层 )测试、环回时延测试、RFC2544性能测试,支持以监...

  • 在2008年刚刚进入这个行业时,我对于要学什么东西,是迷茫的。记得我在08年的时候,入职的公司给我们这批新人做了培训。培训中介绍了很多概念,告诉我们质量很重要,软件测试前景很好,还教了我们很多软件测试理论知识,在最后还给我们介绍了所谓高大上的自动化测试和性能测试。然而,在之后的三年里,这些当时培训时给我灌输的错误知识,不断地给我职业生...

  • 说明 quic-go是使用Go来重写chromium中的QUIC协议,将来计划过渡到IETF版本的QUIC协议。 目前该协议还处于不断更新和活跃之中,目前IETF版本的QUIC协议草案版本号已经到draft 9 下面是我对REAME的实操记录,以作备忘。 项目主页 https://github.com/lucas-clement...

  • 来源:公众号|计算机视觉工坊(系投稿)作者:仲夏夜之星「3D视觉工坊」技术交流群已经成立,目前大约有12000人,方向主要涉及3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、...

  • 点云PCL免费知识星球,点云论文速读。文章:Real-Time LIDAR-Based Urban Road and Sidewalk Detection for Autonomous Vehicles作者:Ern˝o Horváth  , Claudiu Pozna ,and Miklós Unger编译:点云PCL代码:http...

  • 文章:Semantic Histogram Based Graph Matching for Real-Time Multi-Robot Global Localization in Large Scale Environment作者:Xiyue Guo, Junjie Hu, Junfeng Chen, Fuqin Deng, T...

  • 点云PCL免费知识星球,点云论文速读。文章:Robust Place Recognition using an Imaging Lidar作者:Tixiao Shan, Brendan Englot, Fabio Duarte, Carlo Ratti, and Daniela Rus编译:点云PCL(ICRA 2021)开源代码:...

  • 文章:A Survey of Calibration Methods for Optical See-Through Head-Mounted Displays作者:Jens Grubert , Yuta Itoh, Kenneth Moser编译:点云PCL本文仅做学术分享,如有侵权,请联系删除。欢迎各位加入免费知识星球,获取PD...

  • 本文来自 运维人生 ,作者:fly是个稻草人链接:http://www.ywadmin.com/?id=76误删除linux系统文件了?不用急,本文将给你一个恢复linux文件的方法,让你轻松应对运维中的各风险问题。方法总比问题多~说在前面的话针对日常维护操作,难免会出现文件误删除的操作。大家熟知linux文件系统不同win有回收...

  • 原文来自SecIN社区—作者:WiHat0x00 什么是WebShell渗透测试工作的一个阶段性目标就是获取目标服务器的操作控制权限,于是WebShell便应运而生。Webshell中的WEB就是web服务,shell就是管理攻击者与操作系统之间的交互。Webshell被称为攻击者通过Web服务器端口对Web服务器有一定的操作权限,而...

  • 断电时文件系统发生了什么?硬盘又发生了什么?下一次开机时写到一半的文件在系统层面还在吗?在底层还在吗?更进一步的, 文件系统如何保证事务性, 会不会存在某种极端情况导致例如最后几个bit还没写完, 文件系统却认为它成功了的情况?回答不限任何文件系统,谢谢!下面是「北极」的回复分享断电的一瞬间,很多事情是无法确定的:1. 你无法确定...

  • 接到项目需求。需要搭建一个页面进行交互,慢慢来b (2).jpg使用python django框架进行页面的搭建在项目文件下打开窗口,输入命令;django-admin startproject helloword#在文件helloword/helloword/创建view.py在view.py文件中输入以代码from django....

  • 常见的错误集合解决方案(一)No.1提示错误'Microsoft.VC90.CRT,version="9.0.21022.8"把Microsoft.NET Framework 3.5.1下面的全部勾选上。No.2解决Qt Designer设计的图标但是VS生成不显示问题描述:在Qt designer中为菜单栏和工具栏设计的图标,但是...