Robot Framework 循环
RF 用:FOR 来实现循环没有 While 循环,对应的文档解释在这里
<u>http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#for-loops</u>
备注:我也不知道简书出了什么bug,直接点链接跳不过去,大家自己复制链接打开
Framework循环的写法是这样写的:
*** Settings ***
Library mylib3
*** Test Cases ***
Example 1
:FOR ${animal} IN 猫 狗 猪
\ Log To Console ${animal}
\ Log To Console 第二行
Log To Console 循环外面
注意::FOR 前面要加个冒号后面的写法跟 python 很像用 IN,注意 IN 要大写,:FOR 里面的 ${animal} 变量依次代表猫狗猪然后取出里面的每一个元素然后去执行,python 里面循环体要缩进 Robot Framework 也要缩进,大家看到他的缩进前面加了个 \
,这个 \
在这里表示另起一个单元格的意思,for 循环体内的语句, 要缩进一个单元格, 如果是纯文本文件, 连续的空格是无法表示多个单元格的,RF 会只当成一个。 所以前面还要有一个反斜杠转义,表示这边有一个空的单元格。
我们这里固定写了循环,我们在运行的时候实际上很多循环取出来的内容通常是一个变量,比如我们上面 returnlist 就是一个变量,具体返回什么我们不知道,要看这个函数实际执行的结果。
*** Settings ***
Library mylib3
*** Test Cases ***
遍历list变量
${list}= returnlist
:FOR ${index} IN @{list}
\ Log To Console ${index}
具体循环多少次我们不知道,把它存在一个变量里,然后我们用 :FOR ${index} IN @{list}
循环,这个 ${index}
变量会依次取出 @{list} 里面的元素,注意 用 :FOR 循环取出变量的时候,这个 $
符一定变成 @
,不要用 $
这里要注意。
如果这里返回的是一个字典就用 &
符号。我们执行起来看一下,就是 123
我们讲了 for 循环不得不想到一个内置函数 range ,Robot Framework也是有range 的,他的用法我们可以看一下它的官方文档。
<u>http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#id578</u>
备注:我也不知道简书出了什么bug,直接点链接跳不过去,大家自己复制链接打开
打开之后点击 For loops
这里面我们上面说的语法它都有。
image.png
我们看一下 RANGE 的语法,其实也没什么好了解的,就是 :FOR IN 改成 :FOR IN RANGE 然后后面加上一个数字,就是重复多少次。
image.png*** Settings ***
Library mylib3.py
*** Test Cases ***
range用法
[Documentation] Loops over values from 0 to 9
:FOR ${index} IN RANGE 10
\ log to console ${index}
一次取出的是0~9。
image.png
取出1~10
*** Settings ***
Library mylib3.py
*** Test Cases ***
range用法
[Documentation] Loops over values from 1 to 10
:FOR ${index} IN RANGE 1 11
\ log to console ${index}
image.png
加步长,比如说5 30 10,步长为10,打印出来就是 5、15和25
*** Settings ***
Library mylib3.py
*** Test Cases ***
range用法
[Documentation] loops over value froe 5 30 10
:FOR ${index} IN RANGE 5 30 10
\ LOG TO CONSOLE ${INDEX}
image.png
我刚看了官方文档好像 :For 循环前面的冒号和 / 好像都不用加了,感兴趣的去研究一下新的语法。