51Testing软件测试论坛

标题: 【重要】很多人都在问,QTP数值参数化后,如何循环其表中数据呢? [打印本页]

作者: 唐伯虎点蚊香    时间: 2010-10-20 20:11
标题: 【重要】很多人都在问,QTP数值参数化后,如何循环其表中数据呢?
在工作中遇上了这个问题,想从网上寻找答案,但是发现都不行。

比如我想让一下数据循环100次。
表中数据:
userid   passwd
0001      123
0002      235
0005      256

效果如:
(0001,123)
(0002,235)
(0005 ,256)为1次循环,接着做第二次循环。。。。

应该怎么处理呢,很多同仁都问过这个问题,
但是一直无法从网上信息得到答案,在此特请高手大侠们指点一下。
在下感激不尽。
作者: skyzhu    时间: 2010-10-21 09:40
代码代码。。。套个FOR循环就是了
作者: wugecat    时间: 2010-10-21 09:44
本帖最后由 wugecat 于 2010-10-21 09:47 编辑

先定义一个Action2里面填入你的数据,然后设置成运行所有行,外面在套一个Action1循环调用Action2100次
作者: samueloyang    时间: 2010-10-21 09:58
3楼的   能不能将方法说的具体一点呢
作者: 唐伯虎点蚊香    时间: 2010-10-21 10:14
3楼的方案是不行的。这样做就循环每一行100次,再循环第二行
作者: lantianwei    时间: 2010-10-21 10:27
本帖最后由 lantianwei 于 2010-10-21 10:28 编辑

很简单,QTP很久不用 只能写伪码
FOR i=1 to iTimes '你想运行的次数
for iRow=1 to 100 '运行表里的数据
   datatable.SetRow iRow ‘定位到第几行
    sUserName=GetData("Userid",datatable) ’获取当前行的USERID列数据
    sPassword=GetData("passwrod",datatable) ‘获取当前行PASSWORD列数据
  next ’定位到下一行
next ‘执行下一次循环

其实思路有很多种~
作者: skyzhu    时间: 2010-10-21 10:43
比如表里3行,总的要循环100次表
for a = 1 to 100
for i = 1 to 3
aaaa = DataTable.GetSheet("xxx").GetParameter("yyy").ValueByRow(i)
'想干嘛干嘛
next
next
作者: wugecat    时间: 2010-10-21 10:47
本帖最后由 wugecat 于 2010-10-21 10:51 编辑
3楼的方案是不行的。这样做就循环每一行100次,再循环第二行
唐伯虎点蚊香 发表于 2010-10-21 10:14

怎么会不行..你吧数据加到Action2里不就完了
'ACtion1
For i=1 to 2
RunAction "Action2", allIterations
Next

'Action2
msgbox datatable("A","Action2")
Action2数据表:
A
1
2
3
作者: superliming    时间: 2010-10-21 11:01
很简单,QTP很久不用 只能写伪码
FOR i=1 to iTimes '你想运行的次数
for iRow=1 to 100 '运行表里的数据 ...
lantianwei 发表于 2010-10-21 10:27



   就是这样吧
作者: 唐伯虎点蚊香    时间: 2010-10-25 10:35
实用2个for循环的方法应该是可以的,但是我个人觉得实用ation调用的方法比较好些,如:
Ation1中:
Browser("离线下载-登录").Page("离线下载-登录").WebEdit("u").Set DataTable("userid", dtLocalSheet)
        Browser("离线下载-登录").Page("离线下载-登录").WebEdit("WebEdit").SetSecure DataTable("passwd2", dtLocalSheet)
        Browser("离线下载-登录").Page("离线下载-登录").WebButton("登 录").Click
        Browser("离线下载-登录").Page("离线下载").Link("退出").Click

'Action2,在Action2中调用Acion1
For Iterator = 1 To 1000 Step 1
        RunAction "Action1", allIterations
Next

这样的话,Action1还可以被多个action重复的调用,大家觉得呢?
作者: lantianwei    时间: 2010-10-25 10:41
本帖最后由 lantianwei 于 2010-10-25 10:43 编辑

没有绝对的好坏 看你喜欢action还是function
action无非是把function进行了一个包装 让你更直观的感受它罢了 没有什么本质的区别
作者: Coolwind9    时间: 2010-10-25 14:10
直接设置迭代次数啊!让Action反复的跑
作者: wxy5g    时间: 2011-2-22 12:23
如果是global参数时,通过你的设置是可以循环3次,但在dtLocalSheet参数化时,还要设置一下action的属性。
方法:找到QTP最左边一栏,Test Flow中的Action,右键点击预设置循环的Action图标,选择 Action Call Properties...——Run——>Run on all rows,然后执行脚本就可以正确循环了。
这种方法不用去修改代码,很方便的,呵呵,我上次也遇到过这样的问题,还是在网上找到的答案,希望对你有帮助。
作者: 43528782    时间: 2011-2-22 14:19
自己手写循环语句,控制循环次数.




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