第六章 TestNG深入讲解及测试报告输出(下)
------Web自动化测试之Webdriver+TestNG--从零到熟练(系列)
6.2 测试报告美化
我们执行完成测试用例后,都会想得到一个测试报告,这样能对执行的结果有一个清晰的了解,并且也能发给相关人员,大家共同关注一下结果。显然Eclipse的输出结果是不行的,不过大家不要担心,TestNG已帮我们生成了测试报告。
当我们执行Testng.xml运行测试用例后,就会在工程文件下生成一个test-output文件夹,打开下面的index.html文件,就可以看到测试报告如图6.2.1或是6.2.2所示。
图6.2.1 TestNG测试报告一
图6.2.2 TestNG测试报告二
不过这两个报告都比较丑,我们需要对其进行改造一下。通过在网上查询,得到一个方法使用TestNG-xslt这个插件可以生成较理想的报告。
Ø 下载TestNG-xslt并把其中的saxon-8.7.jar复制到测试项目lib下,并附加到工程中
Ø 从你下载的包中拷贝文件testng-results.xsl到 test-output目录下。testng-results.xsl文件的位置是testng-xslt-1.1.1/src/main/resources,为什么要这个文件呢?因为我们的测试报告就是用这个style生成的。
Ø 新建build.xml文件,内容如下:
Ø 用ant运行这个xml就会在test-output目录下生成index1.html, 如下图6.2.3所示:
图6.2.3 生成美化的测试报告
打开它就能看到新生成的测试报告, 通过生成的报告我们能看到总体的情况,比如通过了多少case,失败了多少,跳过了多少没执行。第二个好处是我们可以查看失败的case抛出的异常,有具体的函数和行号。我们还可以通过case执行后的状态来过滤查询等等。
我们测试用例的代码,运行结果如图6.2.4所示:
图6.2.4 美化后的测试报告
我们讲到此处,算是对TestNG+Webdriver进行页面自动化测试达到了最终的结果,有完美的代码架构,数据和程序分享,还有漂亮的结果报告。最后需要的就是你的具体测试用例的编写了,根据需要是否接入jenkins中等。
6.3 TestNG.xml的一些技巧
通过上面的讲解,我们知道了如何运行TestNG.xml来配置我们的测试用例,输出报告,可是总感觉到测试报告还不够清晰。在这里我们讲一下如何写这个配置文件,能让报告显得比较清晰,出错后容易定位。
常用的配置就是在配置文件testng.xml中把测试用例都给写出来,如:
此时是把一个测试工程Test中的所有测试用例,都罗列到一个test标签里,运行测试用例的时候,会把所有的测试用例执行一遍,而且报告如图6.3.1所示:
图6.3.1 一个test多个class的报告
在报告的左侧有一个Test-LoginTest,右边则是所有的测试用例。要想查看测试用例的情况,则点击右边测试用例项即可展开。
但是这样写虽然不影响测试用例的执行,但有如下几个缺点:
(1)如果并发执行的话,可以用methods级来执行,但是通常一个测试用例中的多个方面之间有相关的,不是太好,我们通常以tests为单位来执行。此时,如果Testng.xml这样写的话,就会被当成一个线程中的测试用例,达不到多线程的效果。
(2)当一个测试文件中包含多个测试方法时,这样写就无法清楚地分辨出多个方法了,如果执行出错,不方便定位。
(3)如果在一个测试用例中打开多个窗口的话,Webdriver的quit()函数无法将所有的窗口关闭。
所以我们需要调整一下testng.xml文件的写法,以一个测试文件为一个测试用例的方法来写,如:
此时以测试文件为单位,一个测试文件就是一个Test,报告清楚明了。测试报告如图6.3.2所示:
图6.3.2 优化后的测试报告
并且如果一个测试文件中有多个方法,单击左边对应的测试文件名,会在右边展开文件中的所有方法,如图6.3.3所示:
图 6.3.3查看测试方法
从属关系一目了然,出错的时候方便定位调试。
此时设置多线程的时候,以Tests为单位,各个测试文件会以不同的线程开执行。而我们在设计测试文件的时候,相互之间是没有耦合的,互不影响。一个测试Test执行完后,完成清理工作,而后再执行其他的测试用例,因此不会出现多窗口不被关闭的情况。
这只是一个简单的Testng配置技巧,大家可以根据需要,对其做灵活的设置,使报告达到自己的要求。
6.4 本章小结
本章我们讲解了TestNG的用例管理配置文件testng.xml,以及如何配置测试用例,美化测试报告等操作。通过本章的学习,我们可以根据需要来组织测试用例,并生成漂亮的报告,这样不仅方便定位错误,也可以在老大们面前炫耀一番,感觉挺爽的。由于testng.xml文件中没有办法生成多个suite节点,所以我们可以通过建议多个testng.xml的方式来组织不同测试环境下的测试用例,如tesng1.xml,tesng2.xml……,只要结构和testNG.xml一样,就能执行测试用例。