51Testing软件测试论坛

标题: 怎样实现Action的循坏和串联?进一步提问~ [打印本页]

作者: topchao    时间: 2007-12-5 17:11
标题: 怎样实现Action的循坏和串联?进一步提问~
     有这样一个TEST,其中包含3个ACTION:ACTION1,ACTION2,ACTION3。
    现在我要把ACTION1循环两次以后执行ACTION2,ACTION2循坏三次以后执行ACTION3,然后结束TEST。
   注意:这个循坏不是指一般的循坏,而是要去取DATATABLE中的数据,相当于ACTION1在datatable里读了两行,ACTION2在datatable里读了三行,再运行ACTION3结束。因为在设置中设RUN ALL ROWS或者其他是做不到的,请教怎样实现这一功能?本菜鸟非常感谢!!

[ 本帖最后由 topchao 于 2007-12-12 13:39 编辑 ]
作者: yzem99    时间: 2007-12-5 17:17
RunAction, Action_Name, AllIterations, .....
作者: gy21st    时间: 2007-12-5 20:03
如果数据都是在localsheet, 那么"因为在设置中设RUN ALL ROWS或者其他是做不到的" 正好是你的解决方案

如果数据在globalsheet中,那么自己写循环,每个循环中用RunAction函数就是
作者: zhumingwei    时间: 2007-12-5 22:44
在ACTION1中
for i=1 to 2
脚本正文
next

RunAction, Action2, oneiteration

ACTION2中
for i=1 to 3
脚本正文
next

RunAction, Action3, oneiteration
在action3中
n= datatable.getrowcount  '取得当前action的datatable的所有行,可能函数拼写不准确
for i=1 to n
脚本正文
next

解决你的问题
作者: topchao    时间: 2007-12-12 13:29
多谢楼上几位仁兄!请问QTP里的FOR循环能自动逐行获取DATATABLE里的数据么,怎么我的脚本第二次循环的时候还是取了datatable的第一行数据?难道哪里出错了
作者: gy21st    时间: 2007-12-12 13:47
标题: 回复 5# 的帖子
多看一下帮助,搞清楚globalsheet和localsheet的区别。
作者: topor    时间: 2007-12-12 16:44
回复5楼的问题:
用for循环,再每次读取datatable里面的数据的时候先选中datatable里面的行数就行了。以下为一个global table的例子,如果是localtable的话改一下table名字就可以了。
Dim j,k
j=Datatable.GetSheet ( "Global").GetRowCount
for i=0 to j
  Datatable.GlobalSheet.SetCurrentRow ( i )
    k=Datatable.Value ( "column name",[Global] )

不知道有没有解决LZ在5楼提的问题 。
作者: topchao    时间: 2007-12-13 11:22
标题: 回复 7# 的帖子
按照编码的角度,楼上的更符合逻辑,关键有这句:Datatable.GlobalSheet.SetCurrentRow ( i )。 但是感觉4楼的意思好像只要那样写就可以自动逐行读取了,是不是QTP的功能阿,但是我试了好像不会阿,俺是新手有点困惑,再试试吧。。。。
作者: muquanyifan    时间: 2007-12-13 17:09
RunAction 后面的Iteration就循环读取DataTable中的一行了,不用自己写循环吧
几次用DataTable 里面的行数来实现
串连可以自己修改QuickTest Script Editor自己修改.其实里面还是用到了
Call RunAction




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