51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2683|回复: 5
打印 上一主题 下一主题

[原创] 请教:QTP的action传递给被调用的action参数为空

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-9-28 12:02:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 janne09 于 2010-9-28 13:28 编辑

通过QTP的action参数传递模拟求和方法,可是传递的参数却为空,请大家帮忙看一下呀
场景:
action1传参数a,b给action2,action1通过调用action2得到两个参数的各
action2接收参数,执行两个参数的求和运算,最后将结果返回给action1
步骤:
1.exls表格(test)中设置参数,如下图


2.编写vbs文件
  1. Dim WshShell,path
  2. Set WshShell = CreateObject("WScript.Shell")
  3. Path = WshShell.CurrentDirectory
  4. temp=""""+path+"\test.xls"+""""
  5. DataTable.AddSheet "Action1"
  6. DataTable.ImportSheet temp,1,"Action1"
复制代码
1.创建两个Actions分别为Acton1和Acton2,Acton2嵌套在Acton1下
2.两个Action中添加参数
1).Keyword View视图中选择Action1--右键--Action Properties--Parameter 在其中添加input和output参数,如下图

2).Keyword View视图中选择Action2--右键--Action Properties--Parameter 在其中添加input和output参数,与上图一致
3.在Action1和Action2间建立关联
1).Keyword View视图中选择Action2--右键--Action Call Properties--a的Value
Parameter:选择Test/Action parameter
Parent action parameters的parameter中选择a
2).同理设置b和c的值,如下图



4.action1中代码如下:
  1. int  a,b
  2. a=DataTable.GetSheet("Action1").GetParameter("value").ValueByRow(1)
  3. b=DataTable.GetSheet("Action1").GetParameter("value").ValueByRow(2)
  4. RunAction "Action2", oneIteration, Parameter("a"), Parameter("b"), Parameter("c")
复制代码
5.action2中代码如下:
  1. int a,b
  2. c=a+b
  3. msgbox Parameter("c")
复制代码
6.导入exls表格中参数
QTP--file-settings--resources--加载写好的vbs文件,将exls中参数导入代码中
7.单点调试脚本
结果返回:
a,b中取得值
Parameter("a"), Parameter("b")值为0
c的值为0
脚本运行后结果返回0

本帖子中包含更多资源

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

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

使用道具 举报

该用户从未签到

2#
发表于 2010-9-28 13:22:32 | 只看该作者
选择Action2--右键--Action Properties--Parameter 在其中添加input和output参数

然后
action1中代码
int  a,b
a=DataTable.GetSheet("Action1").GetParameter("value").ValueByRow(1)
b=DataTable.GetSheet("Action1").GetParameter("value").ValueByRow(2)
RunAction "Action2", oneIteration, a,b,c
msgbox c

action2中代码
Parameter("c") = Parameter("a") + Parameter("b")
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2010-9-28 14:22:53 | 只看该作者
回复 2# skyzhu
谢谢!照着你说的办法,参数调用成功了。照你的办法,第3步设置关联是没有必要的了。
可是还是有些不明白,在上面我的第3步建立了关联,也是可以把参数传过去的,可是为什么传递失败呢?
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2015-10-19 13:26
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]测试小兵

    4#
    发表于 2010-9-28 16:00:29 | 只看该作者
    回复 3# janne09


    因为你Action2关联的Action1的input Param:a、b,但Action1中并没有给这两个a、b赋值,
    所以Action2获取的都是默认值0

    你这个语句
    a=DataTable.GetSheet("Action1").GetParameter("value").ValueByRow(1)
    b=DataTable.GetSheet("Action1").GetParameter("value").ValueByRow(2)
    只是你Action1内部的值,并不等同于Action1中的input Parm:a、b
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
     楼主| 发表于 2010-9-29 10:09:43 | 只看该作者
    回复 4# kavensyw

    哦,明白了,谢谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2010-9-30 12:50:24 | 只看该作者
    Parameter("a")=DataTable.GetSheet("Action1").GetParameter("value").ValueByRow(1)
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-17 06:45 , Processed in 0.083091 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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