一、介绍:RobotFrameWork 支持 FOR 循环语句,语法和 Python 的语法基本相同,但 RobotFrameWork 中,"FOR" 关键字前面需要增加一个 ":",写成 ":FOR",其它与 Python 的语法相同

二、For 循环实例

  • FOR  IN

    • 这种结构,循环的次数由 "IN" 关键字后面的变量个数控制  
    • 在 FOR 循环语句结束行加上 END,防止报错 "FAIL : FOR loop contains no keywords
FOR    ${var}    IN    Apple    Banana    Grape
log ${var}
END #结果如下
20200407 22:06:31.272 : INFO : Apple
20200407 22:06:31.273 : INFO : Banana
20200407 22:06:31.274 : INFO : Grape
@{list}    Create List    Apple    Banana    Grape
FOR ${var} IN @{list}
log ${var}
END #结果如下
20200407 22:09:51.195 : INFO : @{list} = [ Apple | Banana | Grape ]
20200407 22:09:51.196 : INFO : Apple
20200407 22:09:51.197 : INFO : Banana
20200407 22:09:51.198 : INFO : Grape
  • FOR  IN RANGE

    • 这种写法更常用一些,"IN RANGE" 后面跟一个整数型的数字的范围,循环的次数受数字的范围控制 
    • 从结果我们可以看出,${var} 的值从 3 开始,一直被赋值到 4,循环 2 次
FOR    ${var}    IN RANGE    3    5
log ${var}
END #结果如下
20200407 22:12:30.172 : INFO : 3
20200407 22:12:30.173 : INFO : 4
    • "IN RANGE" 后面也可以只写一个数字,表示范围的下限默认是0  
FOR    ${var}    IN RANGE    3
log ${var}
END #结果如下
20200407 22:14:01.269 : INFO : 0
20200407 22:14:01.270 : INFO : 1
20200407 22:14:01.271 : INFO : 2
    • 以上两种写法,步长默认步长都是 1,我们也可以修改步长,如下修改步长为 10 
FOR    ${var}    IN RANGE    20    40    10
log ${var}
END #结果如下
20200407 22:15:49.798 : INFO : 20
20200407 22:15:49.799 : INFO : 30
  • For  IN ENUMERATE 循环

    • 有些时候需要知道当前循环中的循环位置的 index 编号,此时可以使用 FOR-IN ENUMERATE 关键字,在取 index 编号时,固定使用 ${index} 作为变量名
@{list}    Create List    Apple    Banana    Grape
FOR ${index} ${var} IN ENUMERATE @{list}
log ${index}:${var}
END #结果如下
20200407 22:21:52.578 : INFO : @{list} = [ Apple | Banana | Grape ]
20200407 22:21:52.579 : INFO : 0:Apple
20200407 22:21:52.580 : INFO : 1:Banana
20200407 22:21:52.581 : INFO : 2:Grape
  • For  IN ZIP 循环

    • 对于有些测试来说,可能会用到多个列表的数据,在循环中需要对这些数据进行组合使用,RF 提供了一个叫做 For-IN ZIP 的关键字,该关键字来自于 python 内置的 zip 函数,可用于对列表进行组合
    • 这里注意,我们在定义一个列表变量时,可以使用 ${列表名},也可以使用 @{列表名},而在 For-IN ZIP 循环中使用该关键字时,只能使用 ${列表名}
@{num}    Create List    1    2    3    4
${name} Create List zhangsan lisi wangwu zhaoliu
FOR ${n1} ${n2} IN ZIP ${num} ${name}
log ${n1}:${n2}
END #结果如下
20200407 22:26:58.989 : INFO : @{num} = [ 1 | 2 | 3 | 4 ]
20200407 22:26:58.990 : INFO : ${name} = ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
20200407 22:26:58.991 : INFO : 1:zhangsan
20200407 22:26:58.992 : INFO : 2:lisi
20200407 22:26:58.993 : INFO : 3:wangwu
20200407 22:26:58.994 : INFO : 4:zhaoliu

三、退出循环

  • Exit For Loop 退出循环

    • RF 也提供了退出循环的语句 —— Exit For Loop,遇到这个语句,脚本将无条件提出循环  
    • 如下 ${var} 被赋值到 Banana,触发了 Exit For Loop 语句而推出了循环

@{list}    Create List    Apple    Banana    Grape
FOR ${var} IN @{list}
Run Keyword If "${var}" == "Banana" Exit For Loop
log ${var}
END #结果如下
20200407 22:31:01.587 : INFO : @{list} = [ Apple | Banana | Grape ]
20200407 22:31:01.589 : INFO : Apple
20200407 22:31:01.590 : INFO : Exiting for loop altogether.
  • Exit For Loop If 满足条件后退出循环
@{list}    Create List    Apple    Banana    Grape
FOR ${var} IN @{list}
Exit For Loop If "${var}" == "Grape"
log ${var}
END #结果如下
20200408 20:02:30.821 : INFO : @{list} = [ Apple | Banana | Grape ]
20200408 20:02:30.822 : INFO : Apple
20200408 20:02:30.824 : INFO : Banana
  • 在循环中使用 Continue,终止单个循环

    • Continue For Loop
@{list}    Create List    Apple    Banana    Grape
FOR ${var} IN @{list}
Run Keyword If "${var}" == "Banana" Continue For Loop
log ${var}
END #结果如下
20200408 20:06:05.555 : INFO : @{list} = [ Apple | Banana | Grape ]
20200408 20:06:05.557 : INFO : Apple
20200408 20:06:05.558 : INFO : Continuing for loop from the next iteration.
20200408 20:06:05.560 : INFO : Grape
    • Continue For Loop If
@{list}    Create List    Apple    Banana    Grape
FOR ${var} IN @{list}
Continue For Loop If "${var}" == "Banana"
log ${var}
END #结果如下
20200408 20:07:36.902 : INFO : @{list} = [ Apple | Banana | Grape ]
20200408 20:07:36.903 : INFO : Apple
20200408 20:07:36.904 : INFO : Continuing for loop from the next iteration.
20200408 20:07:36.906 : INFO : Grape

RF(For 循环)的更多相关文章

  1. rf中的条件判断与循环

    条件判断 run keyword if condition name *args ... ELSE IF conditon name *args ...ELSE name *args conditio ...

  2. RF之条件判断、初始化清除-4

    条件判断:        rf中用run keyword if 关键字做条件判断,以此来达到类似在python中if ...else...条件判断的功能. 注意:ELSE IF一定都是大写的,不然运行 ...

  3. Python3+RobotFramewok 循环判断以及Evaluate用法(三)

    本章主要介绍RF的循环,判断以及关键字Evaluate. 1. for循环 在RF中通过 :FOR 编写循环 :FOR ${i} in range 10 log ${i} @{list} create ...

  4. Linux 档案与目录管理

    『 cd /etc 』这个情况,这也就是所谓的『绝对路径』,他是从根目录连续写上来的一个情况,所以不论你在哪一个路径现执行这一个指令,都会将你移动到该路径下.那如果我是使用『 cd etc 』呢?那表 ...

  5. 复制、移动和删除:cp, rm, mv

    要复制文件,请使用cp(copy)命令.不过,cp命令的用途很多.除了单纯的复制之外,还可以建立连接文件(就是快捷方式),比较两个文件的新旧而予以更新,以及复制整个目录等等.至于移动目录与文件,则使用 ...

  6. [转]复制、移动和删除:cp, rm, mv

    转自:http://www.cnblogs.com/benio/archive/2010/07/27/1785929.html 要复制文件,请使用cp(copy)命令.不过,cp命令的用途很多.除了单 ...

  7. RF中for循环

    robotframework支持FOR循环语句,语法和Python的语法基本相同,但robotframework中,“FOR”关键字前面需要增加一个“:”,写成“:FOR”,其它与Python的语法相 ...

  8. RF之关键字、变量、循环

    关键字的使用: RF的能力是由关键字提供的,所以,我们必须对RF的常用关键字有个了解 . 最常用的关键字就在RF的关键字中.http://robotframework.org 其中Builtin是标准 ...

  9. Robot Framework(13)- RF 循环的详细使用

    如果你还想从头学起Robot Framework,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1770899.html 前言 RF用   ...

随机推荐

  1. 多角度让你彻底明白yield语法糖的用法和原理及在C#函数式编程中的作用

    如果大家读过dapper源码,你会发现这内部有很多方法都用到了yield关键词,那yield到底是用来干嘛的,能不能拿掉,拿掉与不拿掉有多大的差别,首先上一段dapper中精简后的Query方法,先让 ...

  2. HAproxy 基础配置

    基础配置详解 HAProxy 的配置文件haproxy.cfg由两大部分组成,分别是global和proxies部分 global:全局配置段 进程及安全配置相关的参数性能调整相关参数Debug参数 ...

  3. 虚拟机安装windows sever2008

    1.打开并进行新建虚拟机 2.默认选择“典型” 3.选择“安装程序盘映像文件”,并‘浏览’选择本地的文件 4. 5.后面的默认选择即可,安装路径可自己修改 6.这一步的磁盘大小可自己修改的,这里先预设 ...

  4. std::forward和std::move

    std::forward完美转发 保证参数原来的属性(用在template的参数是引用的时候):左值引用在被转发之后仍然保持左值属性,右值引用在被转发之后依然保持右值属性 void show(int& ...

  5. AJ学IOS(06)UI之iOS热门游戏_超级猜图

    AJ分享,必须精品 先看效果图 思路 需求分析 1,搭建界面 1>上半部分,固定的,用Storyboard直接连线(OK) 2>下半部分,根据题目的变化,不断变化和调整,用代码方式实现比较 ...

  6. c++学习day01基础知识学习

    一.代码示例解析: #include <iostream> int main() { using namespace std; cout << "come up an ...

  7. 统计子串数量,Python基础

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:陈YL PS:如有需要Python学习资料的小伙伴可以加点击下方链接自 ...

  8. MDC是什么鬼?用法、源码一锅端

    近期用到阿里的一款开源的数据同步工具 Canal,不经意之中看到了 MDC 的用法,而且平时项目中也多次用到 MDC,趁机科普一把. 通过今天的分享,能让你轻松 get 如下几点,绝对收获满满. a) ...

  9. 它来了!它来了!Seata Go Client 它来了!!!

    抱歉抱歉,这个标题一看就是个很标题党的标题.本文所述的 Seata Go Client 只支持 TCC 模式,并不像 Java 版的能支持到 AT 模式.SAGA 模式.XA 模式,聊胜于无.说到这里 ...

  10. 推荐web前端框架bootstrap

    bootstrap是基于Jquery而开发的一个前端框架. 全中文的学习网站:http://www.runoob.com/bootstrap/bootstrap-tutorial.html 实际上就是 ...