หลังจาก 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 ถัดไปก่อนนะครับ

บทความก่อนหน้านี้Chain locator กับการรวมความสามารถของ locator ที่หลากหลาย เข้าด้วยกัน
บทความถัดไปแชร์ประสบการณ์ จาก Dev ไปเป็น QA Co-Founder
Quality On Top