在自动化测试过程中,使用For循环来对某个动作进行重复操作是很普遍的行为。在Robot Framework中,各种测试库中均提供了多种方式的For循环结构,在其中覆盖了大部分类型的循环类型。而Robot Framework自身也包含了多种的For循环语法结构,可用于独立编写带循环结构的测试脚本。

For循环可以在TestCase中进行使用,也可以在KeyWrod中进行使用。除了特别简单的测试用例外,一般建议在Keyword中进行使用,以便于将For循环的复杂性隐藏起来,保持测试用例结构上尽可能的简单。

1.普通的For循环

在一个普通的For循环中,循环开始的关键字是 :FOR ,其中的:用于与一般关键字做区分,对于循环结构体内的每一行,使用 \ 作为改行的行首关键字。对于循环中的变量,可以在 IN 关键字后给出所有变量,也可以从一个列表中进行赋值,每次循环从列表中取出一个值。例如:

1)给出所有变量

2)从列表中进行赋值

执行测试用例,输出结果为:

2.嵌套循环

Robot Framework本身并不支持直接使用嵌套循环,但是可以通过在一个循环结构中使用另一个包含有循环结构的关键字来实现。例如

*** Keywords ***
Handle Row
    [Arguments]    @{row}
    : FOR    ${cell}    IN    @{row}
    \    log    ${cell}

Handle Table
    [Arguments]    @{table}
    : FOR    @{row}    IN    @{table}
    \    Handle Row    @{row}

在使用时,调用Handle Table,Handle Table再调用内层循环Handle Row,从而实现嵌套循环的目的。

3.For-in-range循环

除了针对序列的循环之外,有些时候还需要能够进行特定迭代次数的循环。Robot Framework中通过FOR index IN RANGE limit来实现,其语法与Python中的使用方式相似。

1)只使用数据上限

只使用数据上限时,数据从0开始,每次+1,数据从0直到指定数据,但不包含该数据。例如:

输出结果为0、1、2、3、4、5、6、7、8、9,数据从0开始至9结束,输出结果不包含10.

2)使用开始和结束数据

使用开始和技术数据时,数据从“开始数据”开始,每次+1,至“结束数据”结束,但不包含结束数据。例如:

输出结果为2、3、4、5、6、7、8、9、10,数据从2开始至10结束,输出结果不包含11.

3)使用开始、结束、步长

使用 开始、结束、步长 时,数据从“开始数据”开始,每次+“步长数据”,至“结束数据”结束,但不包含结束数据。例如:

输出结果为2、5、8,数据从2开始至11结束,每次累加3,输出结果不包含11.

4.For-in-enumerate循环

有些时候需要知道当前循环中的循环位置的index编号,此时可以使用FOR index ... IN ENUMERATE ...关键字。在取index编号时,固定使用 ${index} 作为变量名,例如

运行结果为

5.多变量循环

与Python中的for循环类似的是,当列表中的变量数量可以被一定数量整除时,可以直接使用等于该数量的变量做循环。例如

6.For-in-zip 循环

对于有些测试来说,可能会用到多个列表的数据,在循环中需要对这些数据进行组合使用。Robot Framework提供了一个叫做For-in-zip的关键字,该关键字来自于python内置的zip函数,可用于对列表进行组合。例如

这里注意,我们在定义一个列表变量时,可以使用${列表名},也可以使用@{列表名},而在for-in-zip循环中使用该关键字时,只能使用${列表名}。执行测试用例,结果如下:

7.跳出循环

一般来说一个循环结构的用例需要遍历完所有数据后再退出。某些情况下,需要提前终止并跳出循环时,可以使用Exit For Loop 或者 Exit For Loop If。例如

或是使用

执行测试用例,输出结果为:

8.在循环中使用continue

有些时候,需要在循环中使用continue来跳过循环结构体中的某些过程。在Robot Framework中,可以使用Continue For Loop 或者 Continue For Loop If。具体用法与跳出循环时的Exit用法一致,这里不再做演示。

9.重复执行单一关键字

某些情况下,循环结构可能只需要对一个关键字做执行次数的循环。Robot Framework提供了一个关键字Repeat Keyword,只需指明循环次数和循环中的关键字即可。而在描述循环次数时,有时为了让测试用例易于理解,可以在次数后面添加一个times 或 x 例如:

Robot Framework 教程 (7) - 使用For循环的更多相关文章

  1. Robot FrameWork 教程链接

    1.  Robot Framework 教程: http://cgmblog.sinaapp.com/html/category/robot-framework 2.  Robot Framework ...

  2. Robot Framework 教程 (3) - Resource及关键字 的使用

    From:http://www.cnblogs.com/buaawp/p/4754399.html Robot Framework 教程 (3) - Resource及关键字 的使用 在进行软件自动化 ...

  3. Robot Framework 教程 (6) - 使用条件表达式

    本篇文章,主要对如何在Robot Framework中使用条件表达式做过程控制作说明. 按照Robot Framework的官方文档介绍,Robot Framework并不建议在TestCase或Ke ...

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

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

  5. Robot Framework 教程 (5) - 连接Oracel数据库

    Robot Framework 提供了多种Library.其中Database Library可用来连接操作数据库. 1.安装Database Library 打开Robot Framework官网, ...

  6. Robot Framework 教程 (2) - 页面元素定位

    上一篇文章中,简单模拟了一个baidu搜索并截图的过程,在搜索过程中,我们需要对搜索框.搜索按钮进行定位.本篇文章主要介绍一下具体的定位方法. 我们的脚本如下: *** Settings *** Li ...

  7. Robot Framework 教程 (1) - 环境配置及简单网站兼容性测试

    0.Robot Framework 简介 Robot Framework 是一个通用的自动化测试框架,主要用于“验收测试”和“验收测试驱动开发(ATDD)” (会其它文章中会详细介绍ATDD).它使用 ...

  8. 2. robot framework 关键字,变量,循环

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

  9. robot framework教程-------虫师

    http://www.testclass.net/2017/09/28/happy-holidays/

随机推荐

  1. nginx反向代理解决wechat图片问题

    在nginx 中nginx.conf开启反向代理 location ^~ /wechat_image/ { add_header 'Access-Control-Allow-Origin' " ...

  2. js 知识点整理

    1. indexOf 与String类似,Array也可以通过indexOf()来搜索一个指定的元素的位置: var arr = [10, 20, '30', 'xyz']; arr.indexOf( ...

  3. wordpress4.4+版本自动生成一个768w像素缩略图的解决办法

    4.4版本以后,wordpress增加了响应式图片的功能,目的是让图片能适应手机.平板等不同屏幕,但是我不想要这个功能,把缩略图大小全调成0,function.php里的相关函数全删除了, 上传图片还 ...

  4. mysql查询当天,前一天,一周,一个月

    当天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ...

  5. fiddler抓包工具教程

    Fiddler是一个蛮好用的抓包工具,可以将网络传输发送与接受的数据包进行截获.重发.编辑.转存等操作.也可以用来检测网络安全.反正好处多多,举之不尽呀!当年学习的时候也蛮费劲,一些蛮实用隐藏的小功能 ...

  6. mysql删除表中的记录

    大家都知道,在MySQL中删除一个表中的记录有两种方法,一种是DELETE FROM TABLENAME WHERE... , 还有一种是TRUNCATE TABLE TABLENAME. DELET ...

  7. HPCMS V9使用ajax方式提交表单

    一.前台模板(注:需要引入jquery文件) <form id="myform" class="subscribe-form subscription" ...

  8. 使用NNI的scikit-learn以及Tensorflow分析

    一.NNI简介 NNI (Neural Network Intelligence) 是自动机器学习(AutoML)的工具包. 它通过多种调优的算法来搜索最好的神经网络结构和(或)超参,并支持单机.本地 ...

  9. php学习--变量和数据类型

    PHP变量 变量 ​ 程序执行期间,可以变化的量即为变量. 声明变量 以美元$ 符号声明 注意:(PHP严格区分大小写) 变量名称以 字母.或下划线开始,后面跟上数字/字母/下划线,不能包含特殊字符 ...

  10. tensorflow-gpu与CUDA、CUDNN的版本问题

    折腾了将近两天的时间,终于搞好了,感觉把所有的坑都踩过了一遍.....泪牛满面 1.先安装CUDA,并安装,尽量不要下载最新版本的,坑,本机可以下载最新本10.0版本,但与CUDNN和tensorfl ...