zoukankan      html  css  js  c++  java
  • RF(For 循环)

    一、介绍:RobotFrameWork 支持 FOR 循环语句,语法和 Python 的语法基本相同,但 RobotFrameWork 中,需要 END 结束,其它与 Python 的语法相同

    二、For 循环实例

    • FOR  IN
      • 这种结构,循环的次数由 "IN" 关键字后面的变量个数控制  
      • 在 FOR 循环语句结束行加上 END,防止报错 "FAIL : FOR loop contains no keywords
    FOR    ${var}    IN    Apple    Banana    Grape
        log    ${var}            
    END               
    
    #结果如下
    20200407 22:06:31.272 :  INFO : Apple
    20200407 22:06:31.273 :  INFO : Banana
    20200407 22:06:31.274 :  INFO : Grape
    @{list}    Create List    Apple    Banana    Grape
    FOR    ${var}    IN    @{list}    
        log    ${var}        
    END                
    
    #结果如下
    20200407 22:09:51.195 :  INFO : @{list} = [ Apple | Banana | Grape ]
    20200407 22:09:51.196 :  INFO : Apple
    20200407 22:09:51.197 :  INFO : Banana
    20200407 22:09:51.198 :  INFO : Grape
    • FOR  IN RANGE
      • 这种写法更常用一些,"IN RANGE" 后面跟一个整数型的数字的范围,循环的次数受数字的范围控制 
      • 从结果我们可以看出,${var} 的值从 3 开始,一直被赋值到 4,循环 2 次
    FOR    ${var}    IN RANGE    3    5
        log    ${var}        
    END                
    
    #结果如下
    20200407 22:12:30.172 :  INFO : 3
    20200407 22:12:30.173 :  INFO : 4
      • "IN RANGE" 后面也可以只写一个数字,表示范围的下限默认是0  
    FOR    ${var}    IN RANGE    3
        log    ${var}    
    END            
    
    #结果如下
    20200407 22:14:01.269 :  INFO : 0
    20200407 22:14:01.270 :  INFO : 1
    20200407 22:14:01.271 :  INFO : 2
      • 以上两种写法,步长默认步长都是 1,我们也可以修改步长,如下修改步长为 10 
    FOR    ${var}    IN RANGE    20    40    10
        log    ${var}            
    END                
    
    #结果如下
    20200407 22:15:49.798 :  INFO : 20
    20200407 22:15:49.799 :  INFO : 30    
    • For  IN ENUMERATE 循环
      • 有些时候需要知道当前循环中的循环位置的 index 编号,此时可以使用 FOR-IN ENUMERATE 关键字,在取 index 编号时,固定使用 ${index} 作为变量名
    @{list}    Create List    Apple    Banana    Grape
    FOR    ${index}    ${var}    IN ENUMERATE    @{list}
        log    ${index}:${var}        
    END                
    
    #结果如下
    20200407 22:21:52.578 :  INFO : @{list} = [ Apple | Banana | Grape ]
    20200407 22:21:52.579 :  INFO : 0:Apple
    20200407 22:21:52.580 :  INFO : 1:Banana
    20200407 22:21:52.581 :  INFO : 2:Grape
    • For  IN ZIP 循环
      • 对于有些测试来说,可能会用到多个列表的数据,在循环中需要对这些数据进行组合使用,RF 提供了一个叫做 For-IN ZIP 的关键字,该关键字来自于 python 内置的 zip 函数,可用于对列表进行组合
      • 这里注意,我们在定义一个列表变量时,可以使用 ${列表名},也可以使用 @{列表名},而在 For-IN ZIP 循环中使用该关键字时,只能使用 ${列表名}
    @{num}    Create List    1    2    3    4
    ${name}    Create List    zhangsan    lisi    wangwu    zhaoliu
    FOR    ${n1}    ${n2}    IN ZIP    ${num}    ${name}
        log    ${n1}:${n2}            
    END                    
    
    #结果如下
    20200407 22:26:58.989 :  INFO : @{num} = [ 1 | 2 | 3 | 4 ]
    20200407 22:26:58.990 :  INFO : ${name} = ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
    20200407 22:26:58.991 :  INFO : 1:zhangsan
    20200407 22:26:58.992 :  INFO : 2:lisi
    20200407 22:26:58.993 :  INFO : 3:wangwu
    20200407 22:26:58.994 :  INFO : 4:zhaoliu

    三、退出循环

    • Exit For Loop 退出循环
      • RF 也提供了退出循环的语句 —— Exit For Loop,遇到这个语句,脚本将无条件提出循环  
      • 如下 ${var} 被赋值到 Banana,触发了 Exit For Loop 语句而推出了循环

    @{list}    Create List    Apple    Banana    Grape
    FOR    ${var}    IN    @{list}    
        Run Keyword If    "${var}" == "Banana"    Exit For Loop    
        log    ${var}        
    END                
    
    #结果如下
    20200407 22:31:01.587 :  INFO : @{list} = [ Apple | Banana | Grape ]
    20200407 22:31:01.589 :  INFO : Apple
    20200407 22:31:01.590 :  INFO : Exiting for loop altogether.
    • Exit For Loop If 满足条件后退出循环
    @{list}    Create List    Apple    Banana    Grape
    FOR    ${var}    IN    @{list}    
        Exit For Loop If    "${var}" == "Grape"        
        log    ${var}        
    END                
    
    #结果如下
    20200408 20:02:30.821 :  INFO : @{list} = [ Apple | Banana | Grape ]
    20200408 20:02:30.822 :  INFO : Apple
    20200408 20:02:30.824 :  INFO : Banana
    • 在循环中使用 Continue,终止单个循环
      • Continue For Loop
    @{list}    Create List    Apple    Banana    Grape
    FOR    ${var}    IN    @{list}    
        Run Keyword If    "${var}" == "Banana"    Continue For Loop    
        log    ${var}        
    END                
    
    #结果如下
    20200408 20:06:05.555 :  INFO : @{list} = [ Apple | Banana | Grape ]
    20200408 20:06:05.557 :  INFO : Apple
    20200408 20:06:05.558 :  INFO : Continuing for loop from the next iteration.
    20200408 20:06:05.560 :  INFO : Grape
      • Continue For Loop If
    @{list}    Create List    Apple    Banana    Grape
    FOR    ${var}    IN    @{list}    
        Continue For Loop If    "${var}" == "Banana"        
        log    ${var}        
    END                
    
    #结果如下
    20200408 20:07:36.902 :  INFO : @{list} = [ Apple | Banana | Grape ]
    20200408 20:07:36.903 :  INFO : Apple
    20200408 20:07:36.904 :  INFO : Continuing for loop from the next iteration.
    20200408 20:07:36.906 :  INFO : Grape
  • 相关阅读:
    第一次作业:阅读与准备作业
    第一阶段意见总结
    第一冲刺阶段总结与评审
    第一冲刺阶段总结
    第一冲刺阶段第七天
    第一冲刺阶段第六天
    第一冲刺阶段第五天
    第一冲刺阶段第四天
    第一冲刺阶段第三天
    第一冲刺阶段第二天
  • 原文地址:https://www.cnblogs.com/ZhengYing0813/p/12656691.html
Copyright © 2011-2022 走看看