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文件
Dim WshShell,path
Set WshShell = CreateObject("WScript.Shell")
Path = WshShell.CurrentDirectory
temp=""""+path+"\test.xls"+""""
DataTable.AddSheet "Action1"
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中代码如下:
int a,b
a=DataTable.GetSheet("Action1").GetParameter("value").ValueByRow(1)
b=DataTable.GetSheet("Action1").GetParameter("value").ValueByRow(2)
RunAction "Action2", oneIteration, Parameter("a"), Parameter("b"), Parameter("c")
复制代码
5.action2中代码如下:
int a,b
c=a+b
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