51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3924|回复: 9
打印 上一主题 下一主题

[讨论] Action之间的参数传递问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-10-11 11:49:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2007-10-11 12:31:13 | 只看该作者

继续讨论

比如: 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类型,哪怎么办呢?
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-10-11 13:23:14 | 只看该作者

为什么没人回答呢?

为什么没人回答呢?
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2007-10-11 15:42:57 | 只看该作者

我的贴子都要沉了,班主帮帮忙嘛?

我的贴子都要沉了,班主帮帮忙嘛?抽点点时间帮小女子看看?
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-10-11 15:54:22 | 只看该作者
方法是活的,这条路走不通就可以换条试试~
可以将你在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 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2007-10-11 16:14:59 | 只看该作者

谢谢

你的意思是将我的Action1封装成一个VBS文件,然后,由这个文件去调用Acton2,我不明白的是,就算这样做也要把这个recordset参数传给Acton2呀,始终逃不开这一步
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2007-10-11 16:20:01 | 只看该作者

我怕问题没说清楚,再补充一下

在ACTION中传递其它类型的参数是可以的(比如字符型这些),在一个ACTION中使用数据库中的字段也是可以的,关键是,我要把ACTION1得到的记录集拿到另一个ACTION中去用,就不得行了?
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2007-10-11 17:35:41 | 只看该作者
呵呵,你还是没太明白我的意思,我的意思是你将连接数据库、查询并取出数据库中的值操作全都封装成一个函数,需要访问数据库时调用这个函数就可以了,省几行代码而已

关键是你要把记录集拿到其它Action中去做什么,有非要这么做不可的理由么?既然Action间传递参数不支持这种类型,那么就该换个思路换个方法去解决问题,连接数据库的目的不就是要查看数据库中的值么?记录集也不就是一些值的集合么?整体传递不行那我将它们拆分成单个的字段的值通过Environment来传递不行么?
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2007-10-11 17:58:44 | 只看该作者

哦,这样

因为要到其它的Action中去使用记录集里的各个字段值,(有一二十个字段),所以才要传递记录集,方便调用,不然的话,把它在ACTION1里取出来再传递单个变量就可以了,关键是这样的话,很麻烦,以后维护起来也不方便
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2007-10-11 18:01:39 | 只看该作者

我是这样认为的

既然VB里能够传递RECORSET变量,那么在QTP的脚本里也应该是可以的,只是我没找对方法而已,或者考虑传个地址指针什么的也可以,只要另一个ACTION能准确的访问该数据库的指定记录就可以了
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-9 02:01 , Processed in 0.081422 second(s), 32 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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