多测师_RF(For 循环)

一、介绍:RobotFrameWork 支持 FOR 循环语句,语法和 Python 的语法基本相同,但 RobotFrameWork 中,"FOR" 关键字前面需要增加一个 ":",写成 ":FOR",其它与 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

 

你可能感兴趣的:(多测师_Robot,FrameWork)