查看完整版本: QTP的Test参数以及顶级Action参数的使用

songfun 2007-5-17 00:57

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
[/code]
然后,鼠标选中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  
[/code]

做完这步之后,保存这个vbs文件,双击执行这个vbs文件,你会发现它自动启动了QTP,而且进行了自动测试,最后还取到了运行成功与否的布尔值。
这就是关于Test、Top-Level Action参数使用的例子,它的参数的整个传递过程是:
外部vbs文件 传参数给QuickTest的Test的输入参数InParam1,然后InParam1传参数到InAction1去驱动了Action1的测试,然后通过这个Action1得出了OutAction1的值,然后通过OutAction1传给OutParam1,最后再传回到vbs文件中。示例用MsgBox来打出重新传回到vbs文件中的字符串。

[[i] 本帖最后由 songfun 于 2007-5-17 09:33 编辑 [/i]]

rivermen 2007-5-17 10:07

[quote]
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  
[/quote]

这块比较难理解,能告诉我那里能找到相关的材料?

stone821021 2007-5-17 10:18

正好这个地方不是太清楚,
感谢版主先!sdlkfj3

milan330330 2007-5-17 10:51

OK.运行成功了.研究一下先~~

wssgily 2007-5-17 17:38

正所谓,师者,传道授业解惑也.
佩服!

zhuyuancan 2007-5-17 19:10

给版主顶一个

winfood 2007-5-17 22:52

LZ的帖子说的很详细,要是能把第2段代码中的如下一段去掉可能更好一些。
cnt = pDefColl.Count
Indx = 1
While Indx <= cnt
    Set pDef = pDefColl.Item(Indx)
    Indx = Indx + 1
Wend
这段代码遍历了qtApp.Test.ParameterDefinitions的每个Item,但是与本贴的主题关系不大。

higkoo 2007-5-18 16:54

这和Actions之间调用参数是一个道理。

只是楼主使用VBS调用QTP,传递给一值进去,然后在里面再传递再传出来。

   不明白的朋友 可以做几个Action然后传递参数。

关于VBS里的内容,QTP8.2帮助文档里有说明。sdlkfj3

higkoo 2007-5-18 16:56

挺详细的

[quote]原帖由 [i]songfun[/i] 于 2007-5-17 00:57 发表 [url=http://bbs.51testing.com/redirect.php?goto=findpost&pid=525265&ptid=76226][img]http://bbs.51testing.com/images/common/back.gif[/img][/url]
网上有些关于如何使用Action参数的文章,不过关于QTP的Test参数和Top-Level Action参数的使用例子几乎没有。
有些人甚至不知道这个参数做什么用的,尤其是Test的output不知道怎么取。
其实它是外部对象传给它 ... [/quote]


  挺详细的,给楼主顶一个!

liuchy 2007-5-19 23:28

oh my god.... so strong...

mybiao 2007-5-21 17:38

给版主顶一个

蓝灵飘雪 2007-5-23 15:13

有点疑惑

试验了一下,方法可行。。。但是我不明白,在实际工作中,有什么现实意义,能帮我解决什么问题??

蓝灵飘雪 2007-5-23 15:18

我现在唯一想到的作用就是将case做成vbs调用后,做个批处理文件调用一批case。不过。。。。这样做如果失败的话,就不知道错误在那里了。。。有谁知道它的实际使用价值,来给我解惑吗?

qianganghua 2007-7-19 15:00

明白了参数传递的过程

明白了参数传递的过程,但我不会去这么使用的,意义不大,在action中传递就可以了,可以一样传出值,然后赋值给变量

lantianwei 2007-7-23 10:51

学习一下!

chenzhgz 2007-7-31 00:18

very good

hsjzfling 2007-8-13 01:42

赞一个~~

这个循环可以帮助我们检查下参数~楼主应该是方便我们扩展应用就留下来了吧`~
cnt = pDefColl.Count
Indx = 1
' Display the names and values of each of the parameters in the collection.

While Indx <= cnt

    Set pDef = pDefColl.Item(Indx)

    MsgBox "Param name: " & pDef.Name & "; Type: " & pDef.Type & "; InOut: " & pDef.InOut & "; Description: " _
        & pDef.Description & "Default value: " & pDef.DefaultValue

    Indx = Indx + 1

Wend

songfun 2007-8-14 02:43

当然有价值,你看看Automation Refrence,这是自动化框架的一些根本。

最终实现无人值守的大规模BVT


[quote]原帖由 [i]蓝灵飘雪[/i] 于 2007-5-23 15:18 发表 [url=http://bbs.51testing.com/redirect.php?goto=findpost&pid=534062&ptid=76226][img]http://bbs.51testing.com/images/common/back.gif[/img][/url]
我现在唯一想到的作用就是将case做成vbs调用后,做个批处理文件调用一批case。不过。。。。这样做如果失败的话,就不知道错误在那里了。。。有谁知道它的实际使用价值,来给我解惑吗? [/quote]

songfun 2007-8-17 22:06

这只能说明你还是没有真正理解Test参数的应用意义,当在AOM里实施Remote Agent时,Test参数的传递就发挥出巨大的效力了。



[quote]原帖由 [i]qianganghua[/i] 于 2007-7-19 15:00 发表 [url=http://bbs.51testing.com/redirect.php?goto=findpost&pid=616032&ptid=76226][img]http://bbs.51testing.com/images/common/back.gif[/img][/url]
明白了参数传递的过程,但我不会去这么使用的,意义不大,在action中传递就可以了,可以一样传出值,然后赋值给变量 [/quote]

songfun 2007-8-17 22:08

这个功能好比是共产主义阶段,你们的公司目前也许还处于“原始社会”阶段(没有贬低你们公司的意思,只是打个比方),
当公司的自动化还没上到一定程度的时候,这个功能根本没什么实际作用。

只要在自动化成熟度很高的公司,比如Oracle,才会用到这样的功能。。。


[quote]原帖由 [i]蓝灵飘雪[/i] 于 2007-5-23 15:13 发表 [url=http://bbs.51testing.com/redirect.php?goto=findpost&pid=534035&ptid=76226][img]http://bbs.51testing.com/images/common/back.gif[/img][/url]
试验了一下,方法可行。。。但是我不明白,在实际工作中,有什么现实意义,能帮我解决什么问题?? [/quote]

alanzhou 2007-9-13 16:34

楼主厉害

高启轩阁 2007-9-17 16:34

楼主先谢谢了!在下载看!sdlkfj2

majesty 2007-9-18 13:01

感谢宋老师的例子,不过有点感觉比较奇怪
While Indx <= cnt
    Set pDef = pDefColl.Item(Indx)
    Indx = Indx + 1
Wend
这一段是干什么的?每次循环都把原来的值冲掉了,不晓得是做什么用的?
另外qtApp.Test下的ParameterDefinitions方法在帮助里有吗?我找不到sdlkfj8
希望宋老师指点下sdlkfj3

hollyzhao 2007-9-20 12:43

好东西,又学习了

kankan520 2007-9-25 15:41

谢谢

wangyong_3721 2007-10-7 12:33

ding

Mix 2008-4-1 17:51

Dim qtApp ,pDefColl,pDef ,rtParams,rtParam
Set qtApp = CreateObject("QuickTest.Application")
qtApp.Launch
qtApp.Visible = True
qtApp.Open "C:\Test1"
Set pDefColl = [b]qtApp.Test.ParameterDefinitions [/b]
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  
加黑的不了解什么意思,有人能帮我解释一下么?

yqx 2008-4-15 16:29

宋老师的,果然强,学习。

yqx 2008-4-15 17:38

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  
加黑的不了解什么意思,有人能帮我解释一下么?

参考下面的:
ParameterDefinitions :ParameterDefinition 对象的集合
方法:
GetParameters: 检索包含当前测试或组件运行的输入和输出参数的 Parameters 集合
Count  :集合中的 ParameterDefinition 对象的数量。  
Item  :返回指定的 ParameterDefinition 对象。

yqx 2008-4-15 17:39

[quote]原帖由 [i]Mix[/i] 于 2008-4-1 17:51 发表 [url=http://bbs.51testing.com/redirect.php?goto=findpost&pid=932454&ptid=76226][img]http://bbs.51testing.com/images/common/back.gif[/img][/url]
Dim qtApp ,pDefColl,pDef ,rtParams,rtParam
Set qtApp = CreateObject("QuickTest.Application")
qtApp.Launch
qtApp.Visible = True
qtApp.Open "C:\Test1"
Set pDefColl = qtApp.Test.ParameterDefini ... [/quote]

参考下面的:
ParameterDefinitions :ParameterDefinition 对象的集合
方法:
GetParameters: 检索包含当前测试或组件运行的输入和输出参数的 Parameters 集合
Count  :集合中的 ParameterDefinition 对象的数量。  
Item  :返回指定的 ParameterDefinition 对象。

vickywang_no1 2008-5-5 10:20

为什么我运行VBScript脚本时,运行到 Set pDefColl = qtApp.Test.ParameterDefinitions 会报错“对象不支持此属性或方法”?

vickywang_no1 2008-5-6 08:49

[quote]原帖由 [i]vickywang_no1[/i] 于 2008-5-5 10:20 发表 [url=http://bbs.51testing.com/redirect.php?goto=findpost&pid=961368&ptid=76226][img]http://bbs.51testing.com/images/common/back.gif[/img][/url]
为什么我运行VBScript脚本时,运行到 Set pDefColl = qtApp.Test.ParameterDefinitions 会报错“对象不支持此属性或方法”? [/quote]

错误如图。

vickywang_no1 2008-5-6 17:54

重新安装QTP问题解决了。
页: [1]
查看完整版本: QTP的Test参数以及顶级Action参数的使用