Recursive in Robot framework

การวนลูปใน Robot framework โดยปกติเราสามารถทำได้ด้วยการใช้ ***: FOR*** syntax และใช้ Keyword ในการควบคุม Loop ว่าจะให้ออกจากลูป หรือจะให้ทำในลูปต่อ

Keyword ที่ใช้เป็น Condition ในการใช้ควบคุมลูป จะประกอบด้วย Continue For Loop, Continue For Loop If, Exit For Loop และ Exit For Loop If นอกจากนี้เรายังสามารถทำ Loop อีกแบบหนึ่งได้ด้วยการใช้ Recursive Keyword นั่นก็คือ Keyword ที่เรียกตัวเองนั่นเอง

ตามทฤษฎีของ Recursive Function จะประกอบด้วย 2 ส่วน คือส่วนที่เรียกว่า Base Case จะเป็นส่วนที่จะทำให้ Recursive Call หยุด นั่นคือในส่วนนี้จะต้องไม่มีการเรียก Function ตัวเองซ้ำอีก และอีกส่วนคือส่วนที่จะทำการเรียก Function ตัวเองซ้ำ

ใน Robot Framework เราสามารถทำ Recursive Call ได้ โดยการใช้ Keyword ที่ชื่อ Run Keyword If หรือ Run Keyword Unless

Run Keyword If จะทำการ Run Keyword ที่ระบุ เมื่อ Condition เป็นจริง ส่วน Run Keyword Unless จะทำการ Run Keyword ที่ระบุ เมื่อ Condition เป็นเท็จ เช่น

My Keyword
    Do Step 1
    Do Step 2
    Run Keyword Unless    '${My Var}' == 'OK'    My Keyword

นั่นหมายถึง เมื่อเราเรียก Keyword My Keyword แล้ว มันจะทำ Do Step 1, Do Step 2 ไปเรื่อย ๆ จนกว่าตัวแปร ${My Var} จะมีค่าเท่ากับ OK

สมมติว่า เรามีระบบหนึ่งที่เมื่อ Login ผิดครบ 3 ครั้ง จะขึ้น javascript alert ว่า “Account ของคุณถูกล็อกแล้ว” แต่ถ้ายังไม่ครบ จะขึ้นว่า “Login ผิด” ทีนี้เราต้องการที่จะสั่งให้ Robot ทำการ Login ไปเรื่อย ๆ จนกว่า Account จะถูกล็อก เราก็สามารถเขียนได้ว่า

*** Test Cases ***
Login Until Account Is Locked
    Input Text    username     user1
    Input Password    passwd     testpassword
    Click Element    login
    ${Message}=    Get Alert Message
    Run Keyword Unless    '${Message}' == 'Account ของคุณถูกล็อกแล้ว'    Login Until Account Is Locked

ประมาณนี้

Leave a Reply