robotframework支持FOR循环语句,语法和Python的语法基本相同,但robotframework中,“FOR”关键字前面需要增加一个“:”,写成“:FOR”,其它与Python的语法相同。
1.FOR IN
这种结构,循环的次数由“IN”关键字后面的list变量个数控制。示例如下:
运行结果:
这个例子中,“IN”后面直接写了3个常量,则表示运行三次。每个循环${n}被依次赋予3个常量中的1个。当然“IN”后面也可以写一个List变量,代码修改如下:
效果是一样的。
2.FOR IN RANGE
这种写法更常用一些。“IN RANGE”后面,跟一个整数型的数字的范围。循环的次数受数字的范围控制。示例如下:
运行结果:
从结果我们可以看出,${n}的值从3开始,一直被赋值到4,循环2次。“IN RANGE”后面也可以只写一个数字,表示范围的下限默认是0。示例如下:
运行结果:
以上两种写法,步长默认步长都是1。我们也可以修改步长,示例如下:
运行结果:
这个例子中的步长为10。
3.Exit For Loop 退出循环
RF也提供了退出循环的语句——Exit For Loop。遇到这个语句,脚本将无条件提出循环。示例如下:
运行结果如下:
20190910 16:03:22.890 : INFO : @{list} = [ ]
20190910 16:03:23.011 : INFO : Exiting for loop altogether.
20190910 16:03:23.012 : INFO : [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50]
运行结果如下:
${n}被赋值到4,触发了Exit For Loop语句而推出了循环。
4.Exit For Loop If 满足条件后退出循环
运行结果如下:
20190910 16:03:22.890 : INFO : @{list} = [ ]
20190910 16:03:23.011 : INFO : Exiting for loop altogether.
20190910 16:03:23.012 : INFO : [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50]
运行结果如下:
5.在循环中使用continue,终止单个循环
Continue For Loop If
Continue For Loop
运行结果都如下:
6.For in enumerate循环
有些时候需要知道当前循环中的循环位置的index编号,此时可以使用FOR index … IN ENUMERATE …关键字。在取index编号时,固定使用 ${index} 作为变量名,例如
运行结果为
7.For in zip 循环
对于有些测试来说,可能会用到多个列表的数据,在循环中需要对这些数据进行组合使用。Robot Framework提供了一个叫做For-in-zip的关键字,该关键字来自于python内置的zip函数,可用于对列表进行组合。例如
这里注意,我们在定义一个列表变量时,可以使用${列表名},也可以使用@{列表名},
而在for-in-zip循环中使用该关键字时,只能使用${列表名}。执行测试用例,结果如下: