QTP参数化

来源:互联网 发布:半自动覆膜机分切数据 编辑:程序博客网 时间:2024/05/20 10:14

今天弄了一天的参数化设置,晕头转向的,不过还是有一些收获:

参数化后的循环:

参数化后希望循环,可怎么都运行不起来,写了个For...Next语句还是不行,很烦VBS这种不加大括号的语言,又试了试缩进,也不行。

后来发现,除了在File->Run里改为Run on all rows外,还需要对需要循环的部分分离出来,对单个action点右键,选Action call properties,把里面的也改为Run on all rows才行,呵呵!~

只运行单个action:

脚本名称:runAction
Actions:Action1,Action2,Action3……并列(Location: At the end of the test)

只运行其中一个Action(比如只运行Action2):
1.找到脚本runAction所在目录,打开Action0—>Script.mts,注释掉不需要的action
如:
Call RunAction("Action2", oneIteration)
’Call RunAction("Action1", oneIteration)
’Call RunAction("Action3", oneIteration)
在qtp中重新打开脚本,将只运行action2

2.将action设置为 reusable action
重新写一个脚本,调用要运行的action
如:
新建一个脚本:callAction

RunAction "Action2", oneIteration

 

QTP的Test参数以及顶级Action参数的使用

 

网上有些关于如何使用Action参数的文章,不过关于QTP的Test参数和Top-Level Action参数的使用例子几乎没有。

    有些人甚至不知道这个参数做什么用的,尤其是Test的output不知道怎么取。

    其实它是外部对象传给它的(这个外部对象可以是Quality Center,也可以是vbs这样的驱动程序)。

    以下给大家讲解一个关于QuickTest的Flight的例子。

    首先,在QTP里录制一段脚本,代码如下:

CODE:

SystemUtil.Run "C:"Program Files"Mercury"QuickTest Professional"samples"flight"app"flight4a.exe","","C:"Program Files"Mercury"QuickTest Professional"samples"flight"app"","open"
Dialog("Login").WinEdit("Agent Name:").Set Parameter("InAction1")
wait 5
Dialog("Login").WinEdit("Agent Name:").Type micTab
Dialog("Login").WinEdit("Password:").SetSecure "4649c633ffc8803c10097292953c6334fde3e923"
Dialog("Login").WinEdit("Password:").Type micReturn
Window("Flight Reservation").Close
Parameter("OutAction1") = True

    然后,鼠标选中Keyword View中的Action1,点右键——Action Property,在Parameters的Tab标签下,分别加入:输入参数 InAction1 ,类型String;输出参数 OutAction1,类型 Boolean.如下图。

    再然后,在QTP的菜单File——>>Settings的Parameters的Tab标签下,分别加入:输入参数 InParam1 ,类型String;输出参数 OutParam1,类型 Boolean.如下图。

    接着,鼠标还是选中Keyword View中的Action1,点右键,这次点“Action Call Properties”,在Parameter Values里进行参数化传递设置,把InParam1的值传递给InAction1,把OutAction1的值传递给OutParam1.如下图。

    以上设置完毕后,点“保存”,保存到C:"下,存为Test1好了。

    最后,在你的硬盘上新建一个vbs文件,文件内容如下: CODE:

Dim qtApp ,pDefColl,pDef ,rtParams,rtParam
Set qtApp = CreateObject("QuickTest.Application")
qtApp.Launch
qtApp.Visible = True
qtApp.Open "C:"Test1"
Set pDefColl = qtApp.Test.ParameterDefinitions
cnt = pDefColl.Count
Indx = 1
While Indx <= cnt
Set pDef = pDefColl.Item(Indx)
Indx = Indx + 1
Wend
Set rtParams = pDefColl.GetParameters()
Set rtParam = rtParams.Item("InParam1")
rtParam.Value = "songfun"
qtApp.Test.Run , True, rtParams
MsgBox rtParams.Item("OutParam1").Value

    做完这步之后,保存这个vbs文件,双击执行这个vbs文件,你会发现它    自动启动了QTP,而且进行了自动测试,最后还取到了运行成功与否的布尔值。

    这就是关于Test、Top-Level Action参数使用的例子,它的参数的整个传递过程是:外部vbs文件 传参数给QuickTest的Test的输入参数InParam1,然后InParam1传参数到InAction1去驱动了Action1的测试,然后通过这个Action1得出了OutAction1的值,然后通过OutAction1传给OutParam1,最后再传回到vbs文件中。示例用MsgBox来打出重新传回到vbs文件中的字符串。