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用 ...
随机推荐
- mybatis源码分析--如何加载配置及初始化
简介 Mybatis 是一个持久层框架,它对 JDBC 进行了高级封装,使我们的代码中不会出现任何的 JDBC 代码,另外,它还通过 xml 或注解的方式将 sql 从 DAO/Repository ...
- Python常见数据结构-Tuple元组
Python Tuple基本特点 元组与列表类似,不同之处在于元组的元素不能修改. 与字符串和列表一样,可以根据下标进行切片索引. 元组使用小括号,单一元素的元组定义是必须加一个逗号. Python ...
- 22.3 Extends 构造方法的执行顺序
/** 1.有子父类继承关系的类中,创建父类对象未调用,执行父类无参构造* 2.有子父类继承关系的类中,创建子类对象未调用,执行顺序:默认先调用 父类无参构造---子类无参构造* 在子类的构造方法的第 ...
- 2020-3-15 20175110王礼博 Exp2后门原理与实践
目录 1.使用netcat获取主机操作Shell,cron启动 2.使用socat获取主机操作Shell, 任务计划启动 3.使用MSF meterpreter(或其他软件)生成可执行文件,利用nca ...
- mount --bind绑定命令
将目录或文件DirFile-1绑定到目录或文件DirFile-2上,所有对DirFile-2的访问就是对DirFile-1的访问 mount --bind [DirFile-1] [DirFile-2 ...
- 数据结构和算法(Golang实现)(17)常见数据结构-树
树 树是一种比较高级的基础数据结构,由n个有限节点组成的具有层次关系的集合. 树的定义: 有节点间的层次关系,分为父节点和子节点. 有唯一一个根节点,该根节点没有父节点. 除了根节点,每个节点有且只有 ...
- CentOS7安装MYCAT中间件
MYCAT是一个被广泛使用的功能强大的开源的数据库中间件,当然他的理想不仅仅是做一个中间件.这篇文章主要记录MYCAT服务的搭建过程,下篇会继续更新MYCAT的使用配置. 本篇记录将使用CentOS7 ...
- MySQL exists的用法
有一个查询如下: 1 SELECT c.CustomerId, CompanyName 2 FROM Customers c 3 WHERE EXISTS( 4 SELECT OrderID FROM ...
- Centos7_搭建暗网网站
Tor运行原理 请求方需要使用:洋葱浏览器(Tor Browser)来对暗网网站进行访问 响应放需要使用:Tor协议的的Hidden_service 搭建步骤 更新YUM源: rpm -Uvh htt ...
- 给学妹的 Java 学习路线
大家好,这篇文章主要是讲解下如何自学 Java,这个问题有很多粉丝私信问过,今天又有直系学妹问我如何学习 Java? 我就以我的经历,总结下分享给大家,有不当指出或者有更好的方法建议也欢迎留言指出,大 ...