51Testing软件测试论坛

标题: Action之间的参数传递问题 [打印本页]

作者: yulen36    时间: 2007-10-11 11:49
标题: Action之间的参数传递问题
Action之间的参数传递
例如:在Action1中,有如下代码:
out_str="This is out_string"
RunAction "Action2",oneIteration,out_str
在Acton2中,在其step->Action Properties中的,input参数栏,加入out_str后,
msgbox(parameter("out_str")),就能正确显示参数了 

使用这种方式能不能传递recordset类型的参数呢? 如果不能要怎么传呢,我不想用QTP的data table
作者: yulen36    时间: 2007-10-11 12:31
标题: 继续讨论
比如: Action1
Const strconn="rovider=MSDAORA.1assword=ussdtest;User ID=ussdtest;Data Source=USSDTESTersist Security Info=True"
Set conn=createobject("Adodb.connection")
Set rst=createobject("Adodb.recordset")
sql="select * from JMBCASE"
conn.open strconn
rst.open sql,conn
RunAction "Action2",oneIteration,rst

在Acton2中,在其step->Action Properties中的,input参数栏,加入rst后,设为ANY类型,在ACTION2中使用它
dim rst2
rst2=createobject("Adodb.recordset")
rst2=parameter("rst")


这样会报类型不符,这个ANY类型是不是不支持recordset类型,哪怎么办呢?
作者: yulen36    时间: 2007-10-11 13:23
标题: 为什么没人回答呢?
为什么没人回答呢?
作者: yulen36    时间: 2007-10-11 15:42
标题: 我的贴子都要沉了,班主帮帮忙嘛?
我的贴子都要沉了,班主帮帮忙嘛?抽点点时间帮小女子看看?
作者: hsjzfling    时间: 2007-10-11 15:54
方法是活的,这条路走不通就可以换条试试~
可以将你在2楼的代码封装成一个Fuction存放在外部文件(比如vbs文件),放在settings->Resources中,虽然不知道你在Action间传递那个参数的目的是什么,但这样应该也能实现你的目的吧~
例如:
Function DB(strconn,sql,fieldStr)
        Set conn=createobject("Adodb.connection")
        Set rst=createobject("Adodb.recordset")
        conn.open strconn
        rst.open sql,conn
        fields = split(fieldStr,",")        
        For i = 0 to UBound(fields)
                Environment(Trim(fields(i)))= rst(Trim(fields(i)))
        Next
End Function

说一下fieldStr参数,比如这次要取表中的username,password,address三个字段,则
fieldStr = "username,password,address"
还有一点要注意,就是记得取某个字段值的时候记得要添加相应变量名的环境变量~

[ 本帖最后由 hsjzfling 于 2007-10-11 16:09 编辑 ]
作者: yulen36    时间: 2007-10-11 16:14
标题: 谢谢
你的意思是将我的Action1封装成一个VBS文件,然后,由这个文件去调用Acton2,我不明白的是,就算这样做也要把这个recordset参数传给Acton2呀,始终逃不开这一步
作者: yulen36    时间: 2007-10-11 16:20
标题: 我怕问题没说清楚,再补充一下
在ACTION中传递其它类型的参数是可以的(比如字符型这些),在一个ACTION中使用数据库中的字段也是可以的,关键是,我要把ACTION1得到的记录集拿到另一个ACTION中去用,就不得行了?
作者: hsjzfling    时间: 2007-10-11 17:35
呵呵,你还是没太明白我的意思,我的意思是你将连接数据库、查询并取出数据库中的值操作全都封装成一个函数,需要访问数据库时调用这个函数就可以了,省几行代码而已

关键是你要把记录集拿到其它Action中去做什么,有非要这么做不可的理由么?既然Action间传递参数不支持这种类型,那么就该换个思路换个方法去解决问题,连接数据库的目的不就是要查看数据库中的值么?记录集也不就是一些值的集合么?整体传递不行那我将它们拆分成单个的字段的值通过Environment来传递不行么?
作者: yulen36    时间: 2007-10-11 17:58
标题: 哦,这样
因为要到其它的Action中去使用记录集里的各个字段值,(有一二十个字段),所以才要传递记录集,方便调用,不然的话,把它在ACTION1里取出来再传递单个变量就可以了,关键是这样的话,很麻烦,以后维护起来也不方便
作者: yulen36    时间: 2007-10-11 18:01
标题: 我是这样认为的
既然VB里能够传递RECORSET变量,那么在QTP的脚本里也应该是可以的,只是我没找对方法而已,或者考虑传个地址指针什么的也可以,只要另一个ACTION能准确的访问该数据库的指定记录就可以了




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