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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM