关于RFT中顺序读取数据表
这两天一直在学习RFT工具,碰到的第一难题竟然是对数据表进行遍历。
例如我有一张数据表,里面只有一个字段:usr_name,储存用户登录名。里面有十行记录。现在我要做的就是把这十行记录都输出,在实际的项目过程中,我们会要求输入这十个用户名。
第一次实验时发现测试脚本运行完第一行后就结束了,而且我竟然没找到数据表读取设置的选项(刚学习,实在找不到)。由于不熟悉RFT的功能和语法,在花费了近三个小时充分研究了datapoolscrīptsupport和Idatapool及相关的方法后,终于将代码写出来了,代码如下:
while(!dpDone()){
System.out.println(dpString("usr_name"));
this.dpNext();
}
写完后我就哭了,三个小时四行代码!
不过这个跟头栽的不冤,通过研究这个问题,我弄明白了以下几个问题:
1、RFT软件中一个脚本只能关联一个测试数据表,虽然可以通过自自己定义JAVA接口实现对多个数据表的读取,但是那不是RFT软件的功能;
2、正因为RFT中一个脚本只关联一个测试数据表,所以在脚本中我们可以直接使用DatapoolscrīptSupport对象的dpString()方法来获取参数值。其实我很想知道这个dpString()方法是怎么实现的,为什么我不用创建DatapoolScripsuppor对象的实例就可以直接调用该方法?,但是翻遍了API文档也没找到,只好暂时作罢。
3、如果仅仅是读取与脚本关联的测试数据表,我们用不到datapoolscrīptsupport和Idatapool这两个类。
4、RFT对数据驱动的理解与QTP不同,这点从数据表就能看出来,QTP中每一个脚本都有两种数据表,分别是全局表和本地表,并且在一个脚本中我们可以增加无限个本地表,也就是说,QTP脚本与测试数据表是一对多的关系;但是RFT中,脚本与测试数据表就是一对多的关系,也就是说一个数据池可以被多个脚本所共享。这点差别会导致自动化测试设计的差异。具体会有哪些差异我一时也举不出例子来。
5、通过三个小时的反复折腾,我对RFT的API文档结构更加熟悉了。在以后的脚本开发过程中,这将大大提高我的开发效率。
6、RFT中脚本与数据表多对一的关系会使设计和开发过程更简单。