TestNg的数据驱动整体上可以分为两类:
1、是数据硬编码在代码中,这样的数据限制为小数据,而且修改起来比较麻烦。
2、以外部文件如XML文件、Excel文件等提供数据,然后testNg对外部文件进行解析,获取数据。这种方式适合于数据量比较大的,修改数据时只需要修改外部文件即可。但是理解和学习起来都比较困难。
我几天之前就开始学习第二种方式,想通过外部文件提供数据的方式来实现TestNg的数据驱动,但是在网上查找了好久也没找到合适的资料,再加上本人基础不好,所以一直都没能实现。今天终于学习了一点点东西,对于实现也有了眉目,先记录下:
以XML文件为例,TestNg数据驱动只接受两个格式的数据,Object[][]和Iterator<Object>[],所以,要想实现外部文件的数据驱动,必须将文件中的数据转换成TestNg可以接受的这两种数据格式中的一种。即,对XML文件进行解析,现在比较流行的方式是利用Dom4j。问题又出现了,即利用Dom4j对XML文件进行解析。
Dom4j dataprovider
XML<------------->HashMap<------------> Object[][] <------------>TestNg数据驱动
解析 转换
故,想要实现testNg利用外部文件(XML)实现数据驱动,学习思路如下:
1、了解DOM基本概念,知道其常用接口和方法。
2、使用Dom4j创建xml文件。(本条可忽略,可以直接写xml文件)
3、学会使用Dom4j解析XML文件,将结果存入HashMap中。
4、将HashMap中保存的数据,转换成object[][]格式。
5、利用TestNg实现数据驱动。
下面推荐几篇参考文献:
1、http://blog.163.com/kewangwu@126/blog/static/8672847120126261033594/ 介绍了Dom基本概念,并介绍了常用接口和方法,实现创建、修改xml文件
2、http://blog.csdn.net/cuiweibing/article/details/1743235 利用Dom4j解析xml文件,并将结果保存到HashMap中
下篇给出一个Dom4j解析XML的 具体例子。