Robot Framework 基础编程(1):循环使用
Robot Framework 基础编程(1):FOR和WHILE循环使用
一、FOR循环
1. FOR单循环
最新版本的FOR循环需要以END结尾、:FOR改为FOR,且大小写敏感。FOR循环内不用缩进关键字也可执行,建议缩进,以利于阅读和代码识别。需要注意的是 log outside loop是循环外声明打印,以和for循环相分割。

2. 多行循环对象
以英文...三个点注明换行,如下

3. FOR循环嵌套
在Robot Framework3.1版本之前,for循环不可嵌套,只能通过关键字等的方式传递,在4.0版本后,只需要在一个for循环中直接写入for循环,类似python中的for循环。

4. 使用多个循环变量对象
当前有(1,2,3)、(一,二,三)和(xiaoming,xiaohong,xiaolan)三个集合,同时从三个集合中取值,并赋值给${a},${b},${c},需要注意的是三个集合的长度必须保持一致。如下:


5. FOR-IN ENUMERATE循环遍历
使用FOR-IN ENUMERATE语句可以遍历对象数据的同时,输出对应变量的下标。


6. FOR-IN RANGE循环
IN RANGE语句语法:
FOR ${i} IN RANGE [起始] [结束] [步长]
语法类似python中的range,也是左闭右开类型。
#计算1~100累加和
${num} set variable 0
FOR ${n} IN RANGE 1 101 1
${num} Evaluate ${num}+${n}
END
log ${num}
7. FOR-IN ZIP循环
该语句派生自 Python 内置的 zip()函数,for-in-zip循环的值必须是列表或数组类型的序列, 并且循环变量的数量必须和列表的数量相同,如果${num1} ${num2}替换成${items}一个变量,那么这个变量输出的是循环遍历的数据的集合,也就是(x,y)。 而迭代的停止取决于其中最短的那个列表,从 Robot Framework 6.1 开始,可以配置在迭代项的长度不同时要做什么。默认情况下,最短的项定义迭代次数,而较长的项末尾的值将被忽略。这可以通过使用具有三个可能值mode的选项来更改:
STRICTstrict=True
STRICT:项目必须具有相同的长度。否则,执行失败。这与使用 strict=True Python 的 zip 函数相同。
SHORTEST
SHORTEST:忽略较长项目中的项目。在此模式下,只要其中一个项目已用尽,就支持无限迭代器。这是 defaultbehavior。
LONGESTfillNonefillvaluefill
LONGEST:最长的项目定义迭代次数。较短项目中的 missingvalues 将使用使用fill选项指定的值填充,或者None如果未使用。这与使用 Python 的 szip_longest 函数相同,只是它有 fillvalue argument 而不是 offill。
注意, for-in-zip后面用到的列表通常都是以 标量变量 的形式给出, 如 ${list}. 如果是 列表变量 形式, 则要求这个列表中的元素本身也是列表. (这里需要对着两种变量的格式理解充分)。
#FOR-IN-ZIP使用,对多个列表或集合进行重组
@{lists1} create list 1 2 3
@{lists2} create list a b c
@{lists3} set variable ${lists1} ${lists2}
FOR ${num1} ${num2} IN ZIP ${lists1} ${lists2}
log ${num1}${num2}
END
#zip对象是列表对象的情况处理
FOR ${num1} ${num2} IN ZIP @{lists3}
log ${num1}${num2}
END
结果:

二、WHILE循环
- WHILE循环是robotframework5.0版本之后新增的功能。WHILE循环结合了 FOR loopsandIF/ELSE 结构的功能。它们指定一个条件,只要条件保持为 true,就会重复循环体。
- 可以使用limitconfiguration 参数将限制设置为 maximumiteration count 或整个循环的最大时间。当 limit 是 aniteration count 时,可以只使用整数 like100和 addtimes或xsuffix 在值 like100 times 之后。当限制是超时时,可以使用时间字符串,如10 sor1 hour 10 minutes。也可以通过 usingNONE(不区分大小写) 来完全禁用该限制。以下示例说明了所有这些选项。
注意, 从Robot Framework 6.1 开始,可以省略WHILE语句中的条件。这被解释为条件始终为 true,这对于下面描述的选项limit可能很有用。WHILE循环的默认最大值是10000。- 可以使用on_limit参数来配置超出限制时的行为,它有两个参数
Fail、pass(不区分大小写),默认是fail。如果on_limit=pass时,程序运行到最大限制不会停止,会正常运行下去。 RobtFramework6.1版本后可以使用on_limit_message配置错误信息。默认情况下,达到限制时引发的错误消息是WHILE loop was aborted because it did not finish within the limit of 0.5 seconds. Use the 'limit' argument to increase or remove the limit if needed.具体使用可参考:robot使用手册
Comment WHILE循环
${n} set variable 1
WHILE ${n}<=3
log n的值是:${n}
${n} evaluate ${n}+1
END
#限制循环迭代,limit没设置的话默认循环10000次
WHILE True limit=100 #limit=100限制循环运行100次,limit=None取消循环次数限制,limit=100 seconds 限制循环100秒以内...
log n的值是:${n}
${n} evaluate ${n}+1
END

log可查看:

更多推荐



所有评论(0)