51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 35849|回复: 52
打印 上一主题 下一主题

[原创] QTP的Test参数以及顶级Action参数的使用

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-5-17 00:57:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
网上有些关于如何使用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 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    奋斗
    2022-7-13 15:22
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2007-5-17 10:07:05 | 只看该作者
    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  


    这块比较难理解,能告诉我那里能找到相关的材料?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2007-5-17 10:18:20 | 只看该作者
    正好这个地方不是太清楚,
    感谢版主先!sdlkfj3
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2007-5-17 10:51:48 | 只看该作者
    OK.运行成功了.研究一下先~~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2007-5-17 17:38:35 | 只看该作者
    正所谓,师者,传道授业解惑也.
    佩服!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2007-5-17 19:10:38 | 只看该作者
    给版主顶一个
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2007-5-17 22:52:41 | 只看该作者
    LZ的帖子说的很详细,要是能把第2段代码中的如下一段去掉可能更好一些。
    cnt = pDefColl.Count
    Indx = 1
    While Indx <= cnt
        Set pDef = pDefColl.Item(Indx)
        Indx = Indx + 1
    Wend
    这段代码遍历了qtApp.Test.ParameterDefinitions的每个Item,但是与本贴的主题关系不大。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-12-26 13:34
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
    发表于 2007-5-18 16:54:13 | 只看该作者
    这和Actions之间调用参数是一个道理。

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

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

    关于VBS里的内容,QTP8.2帮助文档里有说明。sdlkfj3
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-12-26 13:34
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    9#
    发表于 2007-5-18 16:56:25 | 只看该作者

    挺详细的

    原帖由 songfun 于 2007-5-17 00:57 发表
    网上有些关于如何使用Action参数的文章,不过关于QTP的Test参数和Top-Level Action参数的使用例子几乎没有。
    有些人甚至不知道这个参数做什么用的,尤其是Test的output不知道怎么取。
    其实它是外部对象传给它 ...



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

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2007-5-19 23:28:20 | 只看该作者
    oh my god.... so strong...
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2007-5-21 17:38:40 | 只看该作者
    给版主顶一个
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2007-5-23 15:13:24 | 只看该作者

    有点疑惑

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

    使用道具 举报

    该用户从未签到

    13#
    发表于 2007-5-23 15:18:43 | 只看该作者
    我现在唯一想到的作用就是将case做成vbs调用后,做个批处理文件调用一批case。不过。。。。这样做如果失败的话,就不知道错误在那里了。。。有谁知道它的实际使用价值,来给我解惑吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2007-7-19 15:00:16 | 只看该作者

    明白了参数传递的过程

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

    使用道具 举报

    该用户从未签到

    15#
    发表于 2007-7-23 10:51:30 | 只看该作者
    学习一下!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
    发表于 2007-7-31 00:18:30 | 只看该作者
    very good
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
    发表于 2007-8-13 01:42:35 | 只看该作者
    赞一个~~

    这个循环可以帮助我们检查下参数~楼主应该是方便我们扩展应用就留下来了吧`~
    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
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
     楼主| 发表于 2007-8-14 02:43:41 | 只看该作者
    当然有价值,你看看Automation Refrence,这是自动化框架的一些根本。

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


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

    使用道具 举报

    该用户从未签到

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



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

    使用道具 举报

    该用户从未签到

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

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


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

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-4-28 21:52 , Processed in 0.088167 second(s), 26 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表