在自動化測試過程當中,使用For循環來對某個動做進行重複操做是很廣泛的行爲。在Robot Framework中,各類測試庫中均提供了多種方式的For循環結構,在其中覆蓋了大部分類型的循環類型。而Robot Framework自身也包含了多種的For循環語法結構,可用於獨立編寫帶循環結構的測試腳本。python
For循環能夠在TestCase中進行使用,也能夠在KeyWrod中進行使用。除了特別簡單的測試用例外,通常建議在Keyword中進行使用,以便於將For循環的複雜性隱藏起來,保持測試用例結構上儘量的簡單。函數
1.普通的For循環oop
在一個普通的For循環中,循環開始的關鍵字是 :FOR ,其中的:用於與通常關鍵字作區分,對於循環結構體內的每一行,使用 \ 做爲改行的行首關鍵字。對於循環中的變量,能夠在 IN 關鍵字後給出全部變量,也能夠從一個列表中進行賦值,每次循環從列表中取出一個值。例如:測試
1)給出全部變量spa
2)從列表中進行賦值3d
執行測試用例,輸出結果爲:code
2.嵌套循環blog
Robot Framework自己並不支持直接使用嵌套循環,可是能夠經過在一個循環結構中使用另外一個包含有循環結構的關鍵字來實現。例如ip
*** Keywords ***
Handle Row
[Arguments] @{row}
: FOR ${cell} IN @{row}
\ log ${cell}
Handle Table
[Arguments] @{table}
: FOR @{row} IN @{table}
\ Handle Row @{row}
在使用時,調用Handle Table,Handle Table再調用內層循環Handle Row,從而實現嵌套循環的目的。it
3.For-in-range循環
除了針對序列的循環以外,有些時候還須要可以進行特定迭代次數的循環。Robot Framework中經過FOR index IN RANGE limit
來實現,其語法與Python中的使用方式類似。
1)只使用數據上限
只使用數據上限時,數據從0開始,每次+1,數據從0直到指定數據,但不包含該數據。例如:
輸出結果爲0、一、二、三、四、五、六、七、八、9,數據從0開始至9結束,輸出結果不包含10.
2)使用開始和結束數據
使用開始和技術數據時,數據從「開始數據」開始,每次+1,至「結束數據」結束,但不包含結束數據。例如:
輸出結果爲二、三、四、五、六、七、八、九、10,數據從2開始至10結束,輸出結果不包含11.
3)使用開始、結束、步長
使用 開始、結束、步長 時,數據從「開始數據」開始,每次+「步長數據」,至「結束數據」結束,但不包含結束數據。例如:
輸出結果爲二、五、8,數據從2開始至11結束,每次累加3,輸出結果不包含11.
4.For-in-enumerate循環
有些時候須要知道當前循環中的循環位置的index編號,此時可使用FOR index ... IN ENUMERATE ...
關鍵字。在取index編號時,固定使用 ${index} 做爲變量名,例如
運行結果爲
5.多變量循環
與Python中的for循環相似的是,當列表中的變量數量能夠被必定數量整除時,能夠直接使用等於該數量的變量作循環。例如
6.For-in-zip 循環
對於有些測試來講,可能會用到多個列表的數據,在循環中須要對這些數據進行組合使用。Robot Framework提供了一個叫作For-in-zip的關鍵字,該關鍵字來自於python內置的zip函數,可用於對列表進行組合。例如
這裏注意,咱們在定義一個列表變量時,可使用${列表名},也可使用@{列表名},而在for-in-zip循環中使用該關鍵字時,只能使用${列表名}。執行測試用例,結果以下:
7.跳出循環
通常來講一個循環結構的用例須要遍歷完全部數據後再退出。某些狀況下,須要提早終止並跳出循環時,可使用Exit For Loop 或者 Exit For Loop If。例如
或是使用
執行測試用例,輸出結果爲:
8.在循環中使用continue
有些時候,須要在循環中使用continue來跳過循環結構體中的某些過程。在Robot Framework中,可使用Continue For Loop 或者 Continue For Loop If。具體用法與跳出循環時的Exit用法一致,這裏再也不作演示。
9.重複執行單一關鍵字
某些狀況下,循環結構可能只須要對一個關鍵字作執行次數的循環。Robot Framework提供了一個關鍵字Repeat Keyword,只需指明循環次數和循環中的關鍵字便可。而在描述循環次數時,有時爲了讓測試用例易於理解,能夠在次數後面添加一個times 或 x 例如: