51Testing软件测试论坛

标题: 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里录制一段脚本,代码如下:

  1. SystemUtil.Run "C:\Program Files\Mercury\QuickTest Professional\samples\flight\app\flight4a.exe","","C:\Program Files\Mercury\QuickTest Professional\samples\flight\app\","open"
  2. Dialog("Login").WinEdit("Agent Name:").Set Parameter("InAction1")
  3. wait 5
  4. Dialog("Login").WinEdit("Agent Name:").Type  micTab
  5. Dialog("Login").WinEdit("Password:").SetSecure "4649c633ffc8803c10097292953c6334fde3e923"
  6. Dialog("Login").WinEdit("Password:").Type  micReturn
  7. Window("Flight Reservation").Close
  8. 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文件,文件内容如下:

  1. Dim qtApp ,pDefColl,pDef ,rtParams,rtParam
  2. Set qtApp = CreateObject("QuickTest.Application")
  3. qtApp.Launch
  4. qtApp.Visible = True
  5. qtApp.Open "C:\Test1"
  6. Set pDefColl = qtApp.Test.ParameterDefinitions
  7. cnt = pDefColl.Count
  8. Indx = 1
  9. While Indx <= cnt
  10.     Set pDef = pDefColl.Item(Indx)
  11.     Indx = Indx + 1
  12. Wend
  13. Set rtParams = pDefColl.GetParameters()
  14. Set rtParam = rtParams.Item("InParam1")
  15. rtParam.Value = "songfun"
  16. qtApp.Test.Run , True, rtParams
  17. 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文件中的字符串。

[ 本帖最后由 songfun 于 2007-5-17 09:33 编辑 ]
作者: rivermen    时间: 2007-5-17 10:07
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  


这块比较难理解,能告诉我那里能找到相关的材料?
作者: 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
标题: 挺详细的
原帖由 songfun 于 2007-5-17 00:57 发表
网上有些关于如何使用Action参数的文章,不过关于QTP的Test参数和Top-Level Action参数的使用例子几乎没有。
有些人甚至不知道这个参数做什么用的,尤其是Test的output不知道怎么取。
其实它是外部对象传给它 ...



  挺详细的,给楼主顶一个!
作者: 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


原帖由 蓝灵飘雪 于 2007-5-23 15:18 发表
我现在唯一想到的作用就是将case做成vbs调用后,做个批处理文件调用一批case。不过。。。。这样做如果失败的话,就不知道错误在那里了。。。有谁知道它的实际使用价值,来给我解惑吗?

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



原帖由 qianganghua 于 2007-7-19 15:00 发表
明白了参数传递的过程,但我不会去这么使用的,意义不大,在action中传递就可以了,可以一样传出值,然后赋值给变量

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

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


原帖由 蓝灵飘雪 于 2007-5-23 15:13 发表
试验了一下,方法可行。。。但是我不明白,在实际工作中,有什么现实意义,能帮我解决什么问题??

作者: 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 = 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  
加黑的不了解什么意思,有人能帮我解释一下么?
作者: 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
原帖由 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 = qtApp.Test.ParameterDefini ...


参考下面的:
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
原帖由 vickywang_no1 于 2008-5-5 10:20 发表
为什么我运行VBScript脚本时,运行到 Set pDefColl = qtApp.Test.ParameterDefinitions 会报错“对象不支持此属性或方法”?


错误如图。
作者: vickywang_no1    时间: 2008-5-6 17:54
重新安装QTP问题解决了。
作者: smilesun666    时间: 2008-10-9 12:37
是什么原因?我执行时显示17行不支持属性?怎么解决的?
作者: 恐怖王子    时间: 2008-10-15 07:39
太好啦!
作者: kakamissyou    时间: 2008-10-16 15:39
标题: 回复 20# 的帖子
楼主强大!

我很随便瞄过这个贴子一眼,当时感觉没什么用,现在自动化用得多了,终于知道这能帮我们做什么了。谢谢!
作者: TEST_HUAN    时间: 2008-10-31 17:28
原帖由 vickywang_no1 于 2008-5-5 10:20 发表
为什么我运行VBScript脚本时,运行到 Set pDefColl = qtApp.Test.ParameterDefinitions 会报错“对象不支持此属性或方法”?

同样的错误!
怎么解决,不能重装
作者: TEST_HUAN    时间: 2008-11-3 11:20
为什么有的运行出错,请版主解释一下
作者: f84248860    时间: 2008-11-4 15:51
顺便的,把那个外部驱动QTP的vbs设到window schedule task里面去,它就是一个batch job了。
作者: zhengyh1980    时间: 2008-12-25 10:09
赞  1234
作者: 学会洒脱    时间: 2009-4-20 11:32
现在10.0版本"Action Call Properties"是不是在keyword view 中右键action里没有了?

PS.我自己的失误,是有的..要再建一个action后就有了,单个好像是没有这个选项.(QTP初学阶段,见笑)

[ 本帖最后由 学会洒脱 于 2009-4-24 16:20 编辑 ]
作者: cswalkman    时间: 2009-4-27 09:49
学些了
作者: dreamsea123    时间: 2009-7-31 17:04
哦看!
作者: 风音    时间: 2009-8-1 11:59
标题: 谢谢
关于启动qtp我已经知道了。只是还不清楚如何把action参数使用进来。 刚看了版主的帖子。我得好好研究研究! 谢谢版主
作者: rojer521    时间: 2010-3-18 00:42
很好很强大
作者: 小不点蜗牛    时间: 2010-6-2 15:29
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶?????????顶顶
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶???????????????顶顶
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶??????????????????顶顶
顶顶顶顶顶顶顶顶顶顶顶????????????????顶顶顶顶顶顶顶顶
顶顶顶顶顶顶顶顶???????顶???顶顶?????顶顶顶顶顶顶顶顶顶
顶顶顶????????????顶顶顶顶顶顶????顶顶顶顶顶顶顶顶顶顶
顶??????????????顶顶顶顶顶顶????顶顶顶顶顶顶顶顶顶顶
顶????????????顶顶顶顶顶顶顶???????????顶顶顶顶
顶????????????顶顶顶顶顶顶??????????????顶顶
顶顶??????????顶顶顶顶顶??????顶顶顶???????顶顶
顶顶顶顶顶顶顶顶????顶顶顶顶????顶顶顶顶顶顶 ?????顶顶顶
顶顶顶顶顶顶顶顶????顶顶顶顶????顶顶??顶顶顶?????顶顶顶
顶顶顶顶顶顶顶顶????顶顶顶顶????顶顶????顶?????顶顶顶
顶顶顶顶顶顶顶顶????顶顶顶顶????顶顶????顶?????顶顶顶
顶顶顶顶顶顶顶顶????顶顶顶顶????顶顶???顶顶?????顶顶顶
顶顶顶顶顶顶顶顶????顶顶顶顶????顶顶???顶顶?????顶顶顶
顶顶顶顶顶顶顶顶????顶顶顶顶????顶????顶顶?????顶顶顶
顶顶顶顶顶顶顶顶????顶顶顶顶????顶????顶顶?????顶顶顶
顶顶顶顶顶顶顶顶????顶顶顶顶????顶????顶顶?????顶顶顶
顶顶顶顶顶顶顶顶????顶顶顶顶????顶????顶顶?????顶顶顶
顶顶顶顶顶顶顶顶????顶顶顶顶???顶顶????顶顶?????顶顶顶
顶顶??顶顶顶?????顶顶顶顶???顶顶???顶顶顶?????顶顶顶
顶顶??????????顶顶顶顶顶??顶顶??顶顶顶顶?????顶顶顶
顶顶顶?????????顶顶顶顶顶顶顶顶???顶顶顶顶顶????顶顶顶
顶顶顶顶顶???????顶顶顶顶顶顶顶顶???顶????顶顶顶顶顶顶顶
顶顶顶顶顶顶??????顶顶顶顶顶顶顶????顶顶?????顶顶顶顶顶
顶顶顶顶顶顶顶顶顶???顶顶顶顶顶顶?????顶顶顶???????顶顶
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶??????顶顶顶顶顶??????顶顶
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶??????顶顶顶顶顶顶???????顶
顶顶顶顶顶顶顶顶顶顶顶顶顶顶?????顶顶顶顶顶顶顶顶顶??????顶
顶顶顶顶顶顶顶顶顶顶顶顶顶?????顶顶顶顶顶顶顶顶顶顶顶????顶顶
作者: luxiuxiu1987    时间: 2010-9-19 15:34
学习下
作者: 石召    时间: 2011-1-11 18:48
信用卡中心
北京毅龙信用卡办理公司>全国范围。信用卡代办公司, 代办高额信用卡, 信用卡办理公司、信用卡金卡代办:办理多家银行信用卡,信用卡透支出来的钱可以长期做生意,可以做为生意的启动资金。毅龙信用卡代办公司>安全专业代办信用卡,毅龙信用卡代办公司-代办白金卡-代办金卡-代办高额信用卡,包工作证明、收入证明,银行工资发放流水记录,事业单位水、电、煤等住址证明,代办财力证明,走银行绿色通道办理,公司设有专人接银行电话,并与各银行的业务经理、审卡中心审核员合作,一条龙式办卡(全国均可办理。一张身份证毅龙信用卡代办公司可同时办理13家银行的信用卡(中信,农行,建行中行,兴业,民生,华夏,光大,普发,深发,交通,招商,工行),可以为持本人身份证的全国任何18周岁以上的人代办理高额金卡,直接交卡中心审批,100%包下卡

咨询联系QQ:
35598187

咨询联系电话:13691440046

联系人:高先生

公司网站 www.758x.com   www.daiban365.com

办理信用卡好处:

信用卡可作为一时资金周转所用或作为您其他的投资消费项目!

1、先消费后还款,享受最长56天的免息还款期。

2、选择最低还款额还款,享受银行循环信用。

3、信用额度高(1万-50万元),让您尽情享受现代都市生活。

4、 信誉好,下卡快,易批核,,为您轻松理财!

5、下卡额度高!没有工作的朋友也可以办理!

6、为拥有信用卡的客户提供方便快捷的现金即刷即提。

7、毅龙信用卡代办公司具有最专业的信用卡知识,使您的信用卡达到最好的使用率,合理利用最长免息期,努力提升您的 信用度!使您一朝办理,终身受益!
联系我时请说明是在哪看到的,谢谢!

地址,北京朝阳区北路 格林豪泰酒店旁

作者: gy168    时间: 2011-4-10 16:19
回复 1# songfun


    好东西,学习一下
作者: moyiyun    时间: 2011-5-4 11:15
顶啊顶,虽然我不太懂。
作者: Shawn_xiao    时间: 2011-12-28 22:41
学习下
作者: muyunsihe    时间: 2012-4-16 16:23
版主这么一说,我真觉得自己对TEST,参数了解的太皮毛了,好好学习下啊,谢谢版主
作者: skducn    时间: 2012-8-3 12:49
哪里有下载 automation reference ?
有的请发一份,呵呵
john.jin@b5m.com




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2