在使用QTP时,基本上都会接触到Datatable的使用。以前了解的Datatable只是作为参数化的一种方式,这几天接触下来发现原来Datatable是如此的强大。
首先,Datatable同MS的Excel一样,可以做单元格和单元格之间的运算,比如单元格加减
可以手动添加等式,使B1=A1+Global!A1+Global!B1,也可以使B1=A1+A2.当然也可以使用excel中的一些函数,比如sum函数,B2=sum (A1:B1).等等
其次, Datatable使用起来很方便,同时可以进行一些sheet表单的编辑,导入,导出等等。通常测试时需要构造大量的数据,很多情况下,项目中使用的测试数据都是保存在Excel或者Database中,那么通过import from file/database可以很方便的导入测试数据。当然也可以导出表单进行数据备份或其他操作。
除了导入导出表单和数据外,Datatable还可以对Data进行加密处理。
选择Data->Encrypt,就可以对Datatble中的数据进行加密了。
第三,Datatable又是对象,包含有很多方法,QTP help中可以检索到对象的方法
对于Datatable对象的方法,还是做了个小小例子,体验了一下。计算器的小例子,在只执行一次iteration的基础上(Setting->Run下将Datatable iteration设置为Run one iteration only),通过对对象名称的参数化实现多行参数的加减法。
Systemutil.Run "C:/Windows/System32/calc.exe"
Dim Rowcount,i,num1
Rowcount=datatable.GetRowCount
For i=1 to Rowcount
num1=datatable.Value("num1")
Window("Calculator").WinButton(num1).Click
Window("Calculator").WinButton("+").Click
Window("Calculator").WinButton("6").Click
Window("Calculator").WinButton("=").Click
Window("Calculator").WinButton("C").Click
datatable.SetNextRow
Next
Window("Calculator").Close
Datatable做如下设置:
通过使用Datatble的方法,在只执行一次iteration的基础上实现了3,4,5,6(保证对象库中必须有3,4,5的Button对象)分别与6的加法。
还有一些需要注意的:
1.对于Datatable的Value Property,使用datatable的值可以是:
Datatable.Value () 或Datatable (),
同样也可以设置datatable的值:
Datatable.Value () =新值或Datatable () =新值;括号内的为(参数ID,sheetID),其中如果sheetID省略,则表示为GlobalSheet。
2. SheetID有三种表示方式:
直接使用Action的名称;
使用Action 的Index值,GlobalSheet的Index值为1,其余Action按照顺序Index值依次增加1;比如Action1的Index值为2,Action2的Index值为3
使用dtGlobalSheet和dtLocalSheet;需要注意的是:在实际的项目中,在项目初期对于SheetID的定义需准确,保证可移植性,避免后期项目庞大后再做修改
3. Datatable.GetRowCount,获得的是GlobalSheet的行数;要想获得LocalSheet的行数,则Datatable.GetSheet(2).GetRowCount,其中2表示SheetID. Datatable.GetSheetCount表示计算当前所有的Sheet数等等。有兴趣的大家可以自己试试Datatable的各个方法,很有意思。
先总结这些,以后有了新的发现,再作更新。