51Testing软件测试论坛

标题: 请教:QTP的action传递给被调用的action参数为空 [打印本页]

作者: janne09    时间: 2010-9-28 12:02
标题: 请教:QTP的action传递给被调用的action参数为空
本帖最后由 janne09 于 2010-9-28 13:28 编辑

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

[attach]65586[/attach]
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参数,如下图
[attach]65587[/attach]
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的值,如下图

[attach]65585[/attach]

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
作者: skyzhu    时间: 2010-9-28 13:22
选择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")
作者: janne09    时间: 2010-9-28 14:22
回复 2# skyzhu
谢谢!照着你说的办法,参数调用成功了。照你的办法,第3步设置关联是没有必要的了。
可是还是有些不明白,在上面我的第3步建立了关联,也是可以把参数传过去的,可是为什么传递失败呢?
作者: kavensyw    时间: 2010-9-28 16:00
回复 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
作者: janne09    时间: 2010-9-29 10:09
回复 4# kavensyw

哦,明白了,谢谢
作者: 风雪夜归人    时间: 2010-9-30 12:50
Parameter("a")=DataTable.GetSheet("Action1").GetParameter("value").ValueByRow(1)




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