หลังจาก Robot Framework version 3.2 ถูกปล่อยออกมา ทุกคนก็รอการอัพเดทครั้งใหญ่ที่จะทำให้ Robot Framework สามารถเขียน Test Script ที่มีความซับซ้อนสูงได้ขึ้นอีกขั้นนึง การเปลี่ยนแปลงใหญ่นี้มีอะไรบ้างมาดูกันเลย
รองรับ Native IF-ELSE Statement
ก่อนหน้านี้ถ้าจะใช้ IF ELSE จะเป็นการเรียกใช้ผ่าน Keywords เช่น Run Keyword IF ข้อเสียคือ เราเขียน Statement ที่ซับซ้อนได้ยากมาก แต่วันนี้จะกลายเป็นเรื่องง่ายแล้วเมื่อ Robot รองรับการเขียน IF ELSE ที่เป็น Native แบบเดียวกับ Python code เลย มาดูกัน
# ตัวอย่าง if else แบบเก่า
Old if else statement
${input} Set Variable ${10}
Run keyword if
... ${input} == ${10} LOG Match
... ELSE LOG Not match
# ตัวอย่าง if else แบบใหม่
Native if else statement
${input} Set Variable ${10}
IF ${input} == ${10}
LOG Match
LOG I can execute more keyword
ELSE
LOG Not match
END
จะเป็นว่าแบบใหม่นั้น Scope ของ if else statement ชัดเจนมากขึ้น และทำให้เราสามารถ รัน keyword ภายใน statement ได้มากกว่าหนึ่ง keyword ด้วย
นอกจากการใช้งานพัฒนาขึ้นแล้ว Log ยังถูก improve ให้เข้าใจง่ายขึ้นด้วย โดย statement ไหนที่ถูก run จะถูก Highlight สีเขียว และที่ถูกข้ามจะเป็นสีเทา
Nested control structure
Robot framework รองรับการใช้ For loop ซ้อนกัน และ ใช้ร่วมกันกับ Statement IF – ELSE แล้ว มาดูตัวอย่างเลย
Nested control structure
@{row 1} = Create List 1 2 3
@{row 2} = Create List 4 5
@{rows} = Create List ${row 1} ${row 2}
FOR ${row} IN @{rows}
FOR ${cell} IN @{row}
IF ${cell} > 3
LOG Match
END
END
END
ปรับ การเข้าถึง List และ dictionary
การเข้าถึง List element สามารถอ้างอังด้วย @ ได้เลย และ dictionary ใช้ & จากตัวอย่างจะเป็นหว่าเราสามารถเข้าถึงตัวแปล items ที่เป็น list ภายใต้ dictionary โดยตรงผ่าน @{var}[items] จากเดิมที่ต้องทำการ create variable มารับค่าก่อนอีกหนึ่งครั้ง
List and dictionary expansion with item access
@{items} = Create List a b c
&{var} = Create dictionary items=${items}
FOR ${item} IN @{var}[items]
Log ${item}
END
Skip Status
เป็น status ใหม่ที่จะช่วยให้เราสั่ง Skip การรันเทสข้อนั้นๆ และยังมี Log แจ้งไว้ใน report อีกด้วย
Skip status
Skip No validation
Skil with if condition
${input} = Set Variable ${20}
Skip If ${input} > ${15}
Limitation
เท่าที่ลองใช้งานดู Version 4 ยังมี bug กับ library บางตัว และ Eclipse RED plugin ทำให้ยังโหลด library มาได้ไม่สมบูรณ์นัก จำเป็นต้องรอ version ถัดไปก่อนนะครับ