RF(For 循环)
一、介绍: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 循环)的更多相关文章
- rf中的条件判断与循环
条件判断 run keyword if condition name *args ... ELSE IF conditon name *args ...ELSE name *args conditio ...
- RF之条件判断、初始化清除-4
条件判断: rf中用run keyword if 关键字做条件判断,以此来达到类似在python中if ...else...条件判断的功能. 注意:ELSE IF一定都是大写的,不然运行 ...
- Python3+RobotFramewok 循环判断以及Evaluate用法(三)
本章主要介绍RF的循环,判断以及关键字Evaluate. 1. for循环 在RF中通过 :FOR 编写循环 :FOR ${i} in range 10 log ${i} @{list} create ...
- Linux 档案与目录管理
『 cd /etc 』这个情况,这也就是所谓的『绝对路径』,他是从根目录连续写上来的一个情况,所以不论你在哪一个路径现执行这一个指令,都会将你移动到该路径下.那如果我是使用『 cd etc 』呢?那表 ...
- 复制、移动和删除:cp, rm, mv
要复制文件,请使用cp(copy)命令.不过,cp命令的用途很多.除了单纯的复制之外,还可以建立连接文件(就是快捷方式),比较两个文件的新旧而予以更新,以及复制整个目录等等.至于移动目录与文件,则使用 ...
- [转]复制、移动和删除:cp, rm, mv
转自:http://www.cnblogs.com/benio/archive/2010/07/27/1785929.html 要复制文件,请使用cp(copy)命令.不过,cp命令的用途很多.除了单 ...
- RF中for循环
robotframework支持FOR循环语句,语法和Python的语法基本相同,但robotframework中,“FOR”关键字前面需要增加一个“:”,写成“:FOR”,其它与Python的语法相 ...
- RF之关键字、变量、循环
关键字的使用: RF的能力是由关键字提供的,所以,我们必须对RF的常用关键字有个了解 . 最常用的关键字就在RF的关键字中.http://robotframework.org 其中Builtin是标准 ...
- Robot Framework(13)- RF 循环的详细使用
如果你还想从头学起Robot Framework,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1770899.html 前言 RF用 ...
随机推荐
- P4015 运输问题【zkw费用流】
输入输出样例 输入 #1复制 2 3 220 280 170 120 210 77 39 105 150 186 122 输出 #1复制 48500 69140zuixiaofeiyo 说明/提示 1 ...
- PHP程序员的能力水平层次(二)
PHPer的定义:PHPer是以PHP程序编写为主要工作,其他方面略有涉及的一种职业人士,大家所说的程序猿. 对PHPer的等级划分 PHP 爱好者 (半个PHPer) PHP 初学者 (PHP Be ...
- vue项目中使用bpmn-流程图预览篇
前情提要 上文已经实现了节点操作的前进.后退.导入.导出等操作,今日来实现“流程图预览”,以及视图的放大缩小 前提:项目安装过bpmn,安装可见上篇文章 实现要点 bpmn提供了两个神器:Modele ...
- vue中的ref属性
1.什么是ref? ref是用于快速定位到dom结构,vue中一般不去操作dom结构,他是数据驱动的.jQuery会疯狂操作DOM {{msg}} mounted(){ let h = this.$r ...
- 并发工具——CyclicBarrier
本博客系列是学习并发编程过程中的记录总结.由于文章比较多,写的时间也比较散,所以我整理了个目录贴(传送门),方便查阅. 并发编程系列博客传送门 CyclicBarrier简介 CyclicBarrie ...
- PHP反序列化漏洞总结
写在前边 做了不少PHP反序列化的题了,是时候把坑给填上了.参考了一些大佬们的博客,自己再做一下总结 1.面向对象 2.PHP序列化和反序列化 3.PHP反序列化漏洞实例 1.面向对象 在了解序列化和 ...
- Redis分布式锁的正确姿势
1. 核心代码: import redis.clients.jedis.Jedis; import java.util.Collections; /** * @Author: qijigui * @C ...
- tensorflow1.0 构建神经网络做非线性归回
""" Please note, this code is only for python 3+. If you are using python 2+, please ...
- 即时通信WebSocket 和Socket.IO
WebSocket HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯. 在2008年诞生,2011年成为国际标准. 现在基本所有浏览器都已经支持了. We ...
- Install go1.5 for CentOS7
https://golang.org/doc/install 下载好后,通过FTPS,传递到Linux里去,放哪里随便你自己,因为被墙了,所以在Windows通过旋风下载了这个玩意儿. 你也可以: w ...