51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

[原创] 那个函数可以退出本次for循环,而执行下次循环(不是退出整个循环)??

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-8-25 11:16:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
当前action做了参数化,取得当前datatable中的所有行,然后循环
现在想实现:当实际和预期不一致的时候跳出本次循环,而执行下次循环,想找一个相当于c中的continue的函数.不知道怎么实现
n=datatable.GetSheet("确认").getrowcount
For i=1 to n
datatable.SetCurrentRow(i)
Dim a,b,c
a= datatable("预期结果",dtLocalSheet)
c= datatable("用例编号",dtLocalSheet)
executefile "result.vbs"
Window("主机").Maximize
Window("主机").Type DataTable("领现金额", dtLocalSheet)'领取金额
RunAction "授权", oneIteration,i
If Window("主机").Check (CheckPoint("确定后的检查")) then  '如实际和预期一致则输出结果,参数化到localsheet中的"预期结果"
        b=a
        Call printout(a,b,c)
else    '实际和预期不一致
        Window("主机").Type micF1 '退出
        'ExitActionIteration  '在此处想退出当前循环而执行下次循环.相当于c中的continue
end if
Window("主机").Type  micReturn'不需要qtp执行此句
Next

[ 本帖最后由 zhumingwei 于 2007-8-25 13:52 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2007-8-25 11:20:17 | 只看该作者
另外说明:因为要调用其他脚本.而其他脚本也需要参数化,所以使用run中的run on all rows不合适.
如果只有当前脚本可是使用run on all rows是可以的
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2007-8-25 11:32:34 | 只看该作者
没有仔细看你的代码,QTP和VBScript里面没有类似c语言的continue关键字。

其实只要把代码里面的分支结构调整一下就可以实现类似continue的流程控制了。
比如:
for *****{
if (expression)
{
    statement1;
    continue;
}
statement2;

}

在VBScript里面只要:
For ***
If not expression Then
    statement2
End If
statement1

Next

上面的例子可能不太恰当,但是只要合理调整一下程序的结构就可以达到目的。

[ 本帖最后由 winfood 于 2007-8-25 11:34 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-8-25 12:37:50 | 只看该作者
没有直接退出for循环的语句

If Window("主机").Check (CheckPoint("确定后的检查")) then  '如实际和预期一致则输出结果,参数化到localsheet中的"预期结果"
        b=a
        Call printout(a,b,c)
else    '实际和预期不一致
        Window("主机").Type micF1 '退出
        'ExitActionIteration  '在此处想退出当前循环而执行下次循环.相当于c中的continue
        你可以在这给i赋值 i = n 那样就跳出循环了
end if
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-8-25 20:34:53 | 只看该作者
Option Explicit
Dim i,j
j=0
For i=0 to 10 step 2 ’i 得值每次增加2
        j=j+1

If  i>5 then exit for  ‘退出循环

next
希望这个可以帮到你 因为 VBS 是没有 continue
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2007-8-26 10:15:25 | 只看该作者
把Window("主机").Type  micReturn'不需要qtp执行此句移到else的上面不就可以了吗
  1. n=datatable.GetSheet("确认").getrowcount
  2. For i=1 to n
  3. datatable.SetCurrentRow(i)
  4. Dim a,b,c
  5. a= datatable("预期结果",dtLocalSheet)
  6. c= datatable("用例编号",dtLocalSheet)
  7. executefile "result.vbs"
  8. Window("主机").Maximize
  9. Window("主机").Type DataTable("领现金额", dtLocalSheet)'领取金额
  10. RunAction "授权", oneIteration,i
  11. If Window("主机").Check (CheckPoint("确定后的检查")) then  '如实际和预期一致则输出结果,参数化到localsheet中的"预期结果"
  12.         b=a
  13.         Call printout(a,b,c)
  14.         Window("主机").Type  micReturn
  15. else    '实际和预期不一致
  16.         Window("主机").Type micF1 '退出
  17.         'ExitActionIteration  '在此处想退出当前循环而执行下次循环.相当于c中的continue
  18. end if
  19. Next
复制代码
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2007-8-26 16:12:44 | 只看该作者
continue 就可以控制了呀 或者用一个IF 了
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2007-8-26 22:11:49 | 只看该作者

回复 #7 bobile 的帖子

QTP里面有continue关键字吗?
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2007-8-26 22:27:31 | 只看该作者
原帖由 winfood 于 2007-8-26 22:11 发表
QTP里面有continue关键字吗?
continue关键字是有的,但与循环就一点关系都没有了
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2007-8-26 23:08:41 | 只看该作者

回复 #9 gzj_06 的帖子

QTP里面的continue不是关键字(key word),而是内部MercuryTimer对象的一个方法(method)。
钻牛角尖了sdlkfj5
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-23 02:04 , Processed in 0.080092 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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