DataTable方法详解
DataTable是QTP提供的一种方法,也是最容易实现参数化的一种方式。QTP针对DataTable对象提供了很多方法,可以对DataTable进行灵活的操作。
DataTable分为Global和Local两种,Global所有的Action都可以用,而Local就是只能Action自己用。
通过DataTable做参数化最直接的方法就是在Keyword View视图下通过选项进行,这样即方便又减少出错的几率。单击要参数化项目的value列,选择出现的箭头弹出Value Configuration Option对话框,在这里可以很方便的进行参数化。
Parameters选择数据来源类型。下拉列表选择DataTable后,选择所要使用的数据表Global还是local,最后选择name参数取自哪列,点击确定后即可完成参数化过程。
代码如下:Dialog("Login").WinEdit("Agent Name:").Set DataTable("user", dtGlobalSheet)
这是最简单最直接的方式。用这种方式需要注意,在File---Seting---Run需要做相应设置,否则运行结果很容易出错,使实际取到的参数值和预期的不一样或是循环不正确的错误。最好的方式是通过写语句来控制迭代过程中的取值。在脚本开发过程中,这种方式是最常用的。类似如下代码:
For i=0 to DataTable.GetCurrentRow
Dialog("Login").WinEdit("Agent Name:").Set DataTable("user", dtGlobalSheet)
DataTable.SetNextRow
Next
关于DataTable iterations的问题:
1、 file-->settings-->run下data table iterations 中设置控制的是数据表中global里数据的运行方式;global是全局的!当运行方式设置为运行全部或多行时,运行几行数据“程序”就要回放几次!!不能重新设置!!
2、edit-->action-->action call properties-->run下data table iterations 中设置控制的是数据表中该action里数据的运行方式;local 是局部的!当运行方式设置为运行全部或多行时,运行几行数据“该action”就要回放几次!!
进一步说明:
- 当global有多行数据file-->settings-->run On all Rows ;action有多行数据action call property->Run On all Rows 程序每次运行时,action中的每行都要执行一次
- 当global 有多行数据file-->settings-->run On all Rows ;action有多条数据,action call property->Run one iteration only 而且global的行数>action的行数,当action执行到最后一行后,不管此时global 的行数为几,下次回放时action都执行最后一行! 如果global的行数<action的行数,action就执行不到最后一行
- action call property->Run from rows to rows,就结合上面所说可以理解
- 当同一个action中有多个参数时,且action call property->Run On all Rows, 这个时候每个参数的数据个数需要相等