For Loop
透過loop可以幫你解決重複性的工作。robot提供兩種Format: For In Element and For In Range
For In Element
For In Element即loop目標以element為主,語法為:For | ${target} | in | @{target_list}。
Example1: Traverse a single element with a list variable
@{elements} | Set Variable | John | Mary :For | ${element} | in | @{elements} | log | ${element}
Example2: Traverse a piar of elements with a list variable
@{elements} | Set Variable | John | 39 | Mary | 20 :For | ${name} | ${age} | in | @{elements} | log | ${name},${age}
RobotFramework無法處理太複雜的資料結構,list是最常使用的儲存方式。可以透過Example2的方式去取各別有意義的資料。
For In Range
For In Element即loop目標以range為主,語法為:For | ${index} | in range | ${range}。
Example1: From 0 to n
comment | dump 0, 1, ..., 9 ${n} | Set Variable | 10 :For | ${i} | in range | ${n} | log | ${i}
Example2: From n1 to n2
comment | dump 1, 2, ..., 10 ${n1} | Set Variable | 1 ${n2} | Set Variable | 11 :For | ${i} | in range | ${n1} | ${n2} | log | ${i}
Example3: From n1 to n2 and increases by k
comment | dump 1, 3, 5, ..., 9 ${n1} | Set Variable | 1 ${n2} | Set Variable | 11 ${k} | Set Variable | 2 :For | ${i} | in range | ${n1} | ${n2} | ${k} | log | ${i}
Practice
Sum of n1 to n2 and increases by k
修改For In Range的example3即可完成這次練習。
${n1} | Set Variable | 1 ${n2} | Set Variable | 11 ${k} | Set Variable | 2 ${sum} | Set Variable | 0 :For | ${i} | in range | ${n1} | ${n2} | ${k} | ${sum} | Evaluate | int(${sun})+int(${i}) log | ${sum}可以發現log keyword沒放在:For的縮排中,代表log不在for loop的scope內,不需要重複執行。
9X9 Multiplication Table
RobotFramework無法做nested for loop,因此我們必須將內部迴圈實做成Keyword: Dump Multiplication Table。
第一個for loop從2到9,並傳到Dump Multiplication Table中計算各個結果。
:For | ${i} | In Range | 2 | 10 | Dump Multiplication Table | ${i}Dump Multiplication Table接收的傳入值,將其各別乘以1~9。
# Keyword Name: Dump Multiplication Table # Arguments: ${index} :For | ${i} | In Range | 1 | 10 | ${result}| Evaluate | int(${index})*int(${i}) | log | ${index}*{i} = ${result}
Reference