เทคนิคการใช้ For loops ใน Robot Framework

Setthapong.Im
3 min readJul 1, 2020

--

photo credit :https://robotframework.org/#/

ในบทความนี้จะมาอธิบายเรื่องการใช้ For loops ใน Robot Framework รูปแบบต่างๆ

For loops

ใน Robot Framework สามารถใช้ For loop ได้สองรูปแบบดังนี้

แบบที่ 1 สามารถใช้งานได้กับ RF Version 3.1 ขึ้นไป

แบบที่ 2 สามารถใช้งานได้ใน Version 3.0.x ลงมา และใน Version 3.2.x แต่จะมีการแจ้งเตือนเป็น warning ไว้ครับ

Simple For loop

for loop ประเภทนี้จะวนซ้ำทำงานทีละค่า สามารถระบุค่า ภายใน loop หรือ เก็บข้อมูลในรูปแบบของ List ตามตัวอย่างด้านล่าง

Example
FOR ${no} IN one two three
Log ${no}
END

Example In List
@{NO} Create List 1 2 3 4
FOR ${no} IN @{NO}
log ${no}
END

Nested for loops

ใน Robot Framework นั้นไม่สามารถเขียน Loop ซ้อนกันได้เหมือนในภาษา Java หรือ ภาษาอื่นๆ ถ้าหากจำเป็นใช้ จำเป็นต้องสร้างเป็น Keyword ขึ้นมาเพื่อใช้งาน หรือเขียน Lib Core Python ขึ้นมาเพื่อใช้งานเพิ่มเติมได้

*** Keywords ***
Handle Table
[Arguments] @{table}
FOR ${row} IN @{table}
Handle Row @{row}
END

Handle Row
[Arguments] @{row}
FOR ${cell} IN @{row}
Handle Cell ${cell}
END

Using several loop variables

เป็นการใช้ For loop ประเภทหลายตัวแปร

Three loop variables
FOR ${index} ${noenglish} ${nothai} IN
... 1 one หนึ่ง
... 2 two สอง
... 3 three สาม
Log ${index} ${noenglish} ${nothai}
END
Two loop variables in list
@{EMPLOYERS} Create List 1 one หนึ่ง 2 two สอง
FOR ${index} ${english} ${finnish} IN @{EMPLOYERS}
Log ${index} ${english} ${finnish}
END

For-in-range loop

Only upper limit
# For loop จะเริ่มทำงานตั้งแต่ 0-9
FOR ${index} IN RANGE 10
Log ${index}
END
Start and end
# For loop จะเริ่มทำงานที่ตำแหน่ง 5-10
# สามารถใส่ +1 เพิ่มได้ถ้าหากต้องการให้ Loop ทำงานถึง 11 รอบ
FOR ${index} IN RANGE 5 11
Log ${index}
END
Also step given
# เป็นการกำหนดตำแหน่งให้ Loop โดยจะทำงาน 3 รอบ ใน index ที่ 5,26,10
# สามารถกำหนด ให้ตำแหน่งเป็น - ได้โดยใส่ เครื่องหมาย -5 , -26
FOR ${index} IN RANGE 5 26 10
Log ${index}
END

For-in-enumerate loop

มีหลักการทำงานเหมือน Simple loop ทั่วไป แต่จะมีการรีเทิร์นค่า index ของ Loop ออกมาด้วย เหมาะสำหรับหากภายในลูป มี Keyword ที่ต้องการตำแหน่งไปใช้ต่อ ทำให้เราสามารถเขียน loop ได้สั้นลง

For-in-enumerate
FOR ${index} ${item} IN ENUMERATE 1 2 3 4
Log ${index}
Log ${item}
END

For-in-zip loop

เป็นคำสั่งสำหรับใช่รวม 2 lists จับคู่เป็น lists เดียวกันและจะทำงาน วนลูบจำนวนรอบเท่ากับ lists ที่สั้นที่สุด
ตัวอย่างเช่น

*** Variables ***
@{ABC} a b c
@{XYZ} x y z
@{NUM} 1 2 3 4 5

*** Test Cases ***
For-in-zip with multiple lists
FOR ${a} ${x} ${n} IN ZIP ${ABC} ${XYZ} ${NUM}
Log Many ${a} ${x} ${n}
END

For-in-zip with one variable
FOR ${items} IN ZIP ${ABC} ${XYZ} ${NUM}
Length Should Be ${items} 3
Log Many ${items}[0] ${items}[1] ${items}[2]
END

Exiting for loop

หลักการทำงานคือ จะมีเงื่อนไขดักอยู่ใน for loop เพื่อให้หลุดลูบก่อนถึงรอบที่จะกำหนด โดยการกำหนดเงื่อนไข ตามตัวอย่างด้านล่าง สามารถออกจาก for loop ได้ 2 Keyword คือ Exit For Loop , Exit For Loop If

*** Test Cases ***
Exiting for loop
FOR ${var} IN a b c
Run Keyword If '${var}'=='c' Exit For Loop
Exit For Loop If '${var}'=='c'
log ${var}
END

Continuing for loop

หลักการทำงานคือ เมื่อ For loop ทำงานถึง Keyword Continue For Loop , Continue For Loop If For loop จะข้ามไปทำงาน รอบถัดไปทันทีหากเข้าเงื่อนไข ตามตัวอย่างด้านล่างนี้ การทดสอบจะไม่ Fail เพราะว่า เราใส่ Continue For Loop ให้ทำงานในรอบถัดไปก่อนที่จะถึงคำสั่ง Fail และจะหยุดทำงานเมื่อรันครบ 1000 รอบ

Continue Example
FOR ${index} IN RANGE 1000
Continue For Loop
Fail
END

หากต้องการดูข้อมูลเพิ่มเติมสามารถดูได้ที ลิ้งด้านล่างครับ

สรุป

ใน Robot Framework นั้นจะมี For loop ทั้งแบบใหม่และแบบเก่า ควรใช้ Robot Framework ในเวอชั่นที่เหมาะสมกับการใช้งาน และใน Robot Framework V 4.0 จะสามารถใช้ ลูป ซ้อน ลูป ได้ตามลิ้งด้านล่าง

Robot Framework 4.0 New For loops Syntax

Be giving, enjoy sharing. :)

--

--