一、介紹: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