QTP插件---数据管理器

来源:互联网 发布:360panorama 类似软件 编辑:程序博客网 时间:2024/06/05 18:00

最近总是想在自动化测试这个领域去做一些事情!数据管理器我最早是采用VBS去完成的!开始的目的只是想将它转化成C#语言!然后做一个可以看的过去的界面操作!但是做着做着,越发敢兴趣起来!所以会把这个插件持续开发下去!

程序下载地址:

http://www.3atesting.com/bbs/thread-4874-1-1.html

关于插件的使用说明和一键安装程序请参考下面信息

 

安装环境:... 2

安装:... 2

数据管理编辑器的使用:... 4

创建案例:... 5

修改数据的循环的逻辑关系... 7

顺序:... 7

间隔... 7

随机... 7

与“***”相等... 8

建议一对多的关系... 8

示例:... 9

VBS调用:... 9

QTP中调用... 9

API介绍:... 10

Void Obj.InitExcel(string filename, string sheetn,string tool). 10

Int Obj.GetRowCountR()... 10

int Obj.getRealCount(int col). 10

Int obj. GetColumnCount(). 11

string Obj.DataRow(string fieldname) 参数:... 11

string Obj.GetDataCell(int row,int col). 11

string Obj. GetDataCellSeq (int row,int col). 12

Void Obj.ReleaseDataManager()... 12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

安装环境:

Ø         操作系统:Win2000以及WinxPWin2003

Ø         DotnetFramework2.0

Ø         如果在QTP中运行,需要QTP9.2或以上版本

Ø         Office2003

 

安装:

1、  点击:DataManagerSetup.msi

 

选择“下一步”

 

选择安装目录,然后点击“下一步”,开始安装,

 

选择“关闭”,则完成安装

安装好之后,你可以在菜单上可以看到

 

 

(安装程序同时完成了相关COM注册过程,此时可以在QTP直接调用相关组件)

 

数据管理编辑器的使用:

 

在菜单上点击“数据管理编辑器”

 

 

你如果需要帮助,可以点击

 

可以看到相关的帮助信息以及3atesting各类视频信息

 

创建案例:

 

鼠标在TestCaseTab点击右键,即可出现如下菜单

 

选择“列”则会新增一列,列就是你的案例中所涉及到的数据的名字,然后需要修改你的数据名称你可以双击列名,然后修改为你想要的名字,例如:将Column0,修改为Username”

 

 

 

修改数据的循环的逻辑关系

属性:表示有如下的选择


顺序:

表示这一列在循环过程中,将按照序号采取递进的方式进行获取这一列的方式进行操作。

如果你“属性”选择“顺序”模式,此时必须双击“类别”这一行!它将弹出一个对话框

 

 

间隔

每次获取新值得间隔,比如说第一次取得是第一行,第二次再次取值时候,希望取第三行,那么间隔则设置为2,即可。

循环控制:什么时候获取新值,比如说:在本次循环过程中有2个地方调用此参数,但是希望在本次循环过程中不改变对应的值,则选择“循环结束才更新”

 

随机

则表示在本列中每次都会随机获取一个值,此时第二行“类别”显示灰颜色。双击无效

 

 

与“***”相等

程序会自动地根据现在的列数帮你选择出你可以建立的参数列表。例如

 

因为现在案例中有四个参数,那么你可以与其他参数建立一一对应的关系。即:如果我们选择了和“username”建立一一对应关系,那么username取得是第一行的参数时,那么本参数也取得是第一行

 

建议一对多的关系

选择这个选项的时候,将会弹出一个新窗口

 

 

比如说我们选择和username这个参数建立13的关系。那么你可以在下拉列表框选择3。(下拉列表框的值的个数是与你现在的主列表的行数关联的,如果主程序有4行,那么它会有1234,四个值供你选择)

 

保存:

完成所有的数据输入的时候,你可以选择保存,将会保存到一个xls文件中去。

 

 

示例:

VBS调用:

 

Set  Data_Obj=CreateObject("TestDataManager.SanATestingDataManager")创建COM对象示例

Data_Obj.InitExcel "D:/TestDataManager/sample/book3.xls","TestCase",""'修改book1.xls的文件路径

msgbox Data_Obj.getRealCount(1)'获取第二列的行数

msgbox Data_Obj.GetRowCountR()'获取案例的总行数

 

For i = 1 to 2

msgbox Data_Obj.DataRowOrg("Username",i)'每次都更新、递进步骤为

msgbox Data_Obj.DataRowOrg("Password",i)'Username建议一一对应的关系

msgbox Data_Obj.DataRowOrg("Area",i)'随机取一个值

Next

 

QTP中调用

打开QTP,然后输入SanATestingDataManager,输入“.”它会自动地显示可以调用的方法函数,关于函数定义见API介绍:

 

 

SanATestingDataManager.InitExcel "c:/book3.xls","TestCase",""

 

msgbox SanATestingDataManager.getRealCount(1)

msgbox SanATestingDataManager.GetDataCell(2,1)

For i=1 to 5

msgbox   SanATestingDataManager.DataRowOrg("Username",i)

msgbox   SanATestingDataManager.DataRowOrg("Password",i)

msgbox   SanATestingDataManager.DataRowOrg("Area",i)

Next

SanATestingDataManager.ReleaseDataManager()

 

 

API介绍:

Void Obj.InitExcel(string filename, string sheetn,string tool)

参数:

Obj:在QTP中是SanAtesting,否则为实例化的对象名

Filename:存放案例的excel文件

SheetnExcelsheet名字

Tool:如果是要集成QTP中的循环,则设定此值为“QTP”,否则至为””

返回值: 无

例如:

你的案例保存在c:/testcases/testcase1.xls,测试的案例sheetuser”不集成QTP循环

SanAtesting.InitExcel(c:/testcases/testcase1.xls,user,””)

集成QTP的循环

SanAtesting.InitExcel(c:/testcases/testcase1.xls,user,QTP)

 

Int Obj.GetRowCountR()

参数:

Obj:在QTP中是SanAtesting,否则为实例化的对象名

返回值:返回对应的总行数。例如:Argument13个值,Argument25个值。则返回5个值

int Obj.getRealCount(int col)

参数:

Obj:在QTP中是SanAtesting,否则为实例化的对象名

Col:需要获取的某一个列的行数。此值从0开始计数

返回值:返回对应列的行数

例如:例如:第一列Argument13个值

SanATesting. getPrimaryCount(0),将返回3

 

Int obj. GetColumnCount()

参数:

Obj:在QTP中是SanAtesting,否则为实例化的对象名

返回值:返回对应案例的总列数。例如:案例中有5列,则返回5

 

string Obj.DataRow(string fieldname)
参数:

Obj:在QTP中是SanAtesting,否则为实例化的对象名

Fieldname:获取对应列的值。此值是根据案例中实际的运行关系,计算获取到定义的行。此函数集成了QTP的循环。所以此时不需要设定运行过程中对应的行数

返回值:通过根据运行的逻辑以及参数属性的定义。动态计算获取对应的某一具体的值

 

string Obj.DataRowOrg(string fieldname,int iterflag)
参数:

Obj:在QTP中是SanAtesting,否则为实例化的对象名

Fieldname:获取对应列的值。例如:Argument1

Iterflag:传入程序的正在运行的次数。例如:程序需要运行3次,现在正在运行第二次,那么此值为2

返回值:通过根据运行的逻辑以及参数属性的定义。动态计算获取对应的某一具体的值

例如:

For i = 1 to 5

msgbox SanATesting.DataRowOrg("Argument1",i)

next

 

string Obj.GetDataCell(int row,int col)

参数:

Obj:在QTP中是SanAtesting,否则为实例化的对象名

Rowcol:获取案例对应的行以及列的具体某一个值。注:此值下标为:0

返回:指定行、列对应的值

 

例如:获取案例中第一行、第一列的值

SanATesting.GetDataCell(0,0)

备注:这个函数不影响与这个字段相关的参数的循环逻辑。

例如:

Arg1

Arg2

Seq

Sameas{Arg1}

1

A

2

B

3

C

假设现在Arg1现在取得值为第一行,那么Arg2同样获取的值也为第一行。但是程序又调用了GetDataCell20)即获取到第Arg1第三行的值,但是此时与Arg1有逻辑关系的Arg2,现在仍是取第一行的值,这个函数不会影响与之相关的参数获取的函数

 

string Obj. GetDataCellSeq (int row,int col)

参数:

Obj:在QTP中是SanAtesting,否则为实例化的对象名

Rowcol:获取案例对应的行以及列的具体某一个值。注:此值下标为:0

返回:指定行、列对应的值

例如:获取案例中第一行、第一列的值

SanATesting. GetDataCellSeq (0,0)

备注:这个函数将影响与这个字段相关的参数的循环逻辑。

例如:

Arg1

Arg2

Seq

Sameas{Arg1}

1

A

2

B

3

C

假设现在Arg1现在取得值为第一行,那么Arg2同样获取的值也为第一行。但是程序又调用了GetDataCell20)即获取到第Arg1第三行的值,但是此时与Arg1有逻辑关系的Arg2,现在获取到的是第三行的值。

 

Void Obj.ReleaseDataManager()

释放所有资源信息