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可查看:
在这里插入图片描述

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐