Một Keyword hay từ khoá, là một hành động hay một nhóm các hành động trong Robot Framework, tuỳ vào việc chúng ta đang sử dụng keyword có sẵn hay đang sử dụng keyword tự định nghĩa.

  1. Built-in
  2. User-defined
  3. Arguments
  4. Return
  5. Keywords from Self-defined Library
  6. Conclusion

Built-in

Về cơ bản một keyword built-in sẽ phụ thuộc vào Standard Library hoặc External Library. Ví dụ, bản thân Robot Framework có một nhóm các keyword có thể sử dụng luôn, xem tại Built-in Keywords. Cơ bản nhất là các keyword dùng để kiểm soát flow của hoạt động test như

Run Keyword And Expect Error
Run Keyword And Ignore Error
Run Keyword And Return
Run Keyword And Return If
Run Keyword And Return Status
Run Keyword And Warn On Failure
Run Keyword If
Run Keyword If All Tests Passed
Run Keyword If Any Tests Failed
Run Keyword If Test Failed
Run Keyword If Test Passed
Run Keyword If Timeout Occurred
Run Keyword Unless
Run Keywords
Skip
Skip If

Hay các keyword để ép kiểu dữ liệu

Convert To Boolean
Convert To Bytes
Convert To Hex
Convert To Integer
Convert To Number
Convert To Octal
Convert To String

Và các keyword để thực hiện Assertion

Should Be Empty
Should Be Equal
Should Be True
Should Contain
Should Contain Any
Should Contain X Times
Should End With
Should Match
Should Match Regexp
Should Not Be Empty
Should Not Be Equal
Should Not Be True
Should Not Contain
Should Not Contain Any
Should Not End With
Should Not Match
Should Not Match Regexp
Should Not Start With
Should Start With

Cách sử dụng các từ khoá này các bạn có thể đọc cụ thể trong document của Robot Framework.

Ngoài ra như ở bài phần Library, có các Standard Library như Collections, DateTime, OperatingSystem,... cũng có các keyword sẵn để sử dụng. Bên cạnh đấy, tương tự cho các External Library như SeleniumLibrary, AppiumLibrary,...

User-defined

Keyword do người dùng tự viết ra sẽ nằm ở dưới section Keywords, kiểu dạng như sau, mình sẽ ví dụ với một số keyword của SeleniumLibrary

*** Keywords ***
Open Browser To Google
    Open Browser    http://google.com    chrome

Thường thì chúng ta sẽ không viết keyword cho chỉ một keyword, nhưng nó cũng có thể được thực hiện nhằm che dấu logic thực hiện của keyword đó, giúp cho code dễ đọc hơn. Tưởng tượng thay vì nhìn thấy

Open Browser    http://google.com    chrome

Một người non-tech khi nhìn vào sẽ kiểu Ồ, chrome là gì, đây là mở browser vào google đúng không ?, thì với việc sử dụng keyword để che đi cú pháp

Open Browser To Google

Người đọc chỉ cần nhìn vào sẽ nắm được ngay cái gì đang được thực hiện trong keyword.

Đồng thời, chúng ta cũng có thể bổ sung một số keyword phụ trợ, ví dụ như

*** Keywords ***
Open Browser To Google
    Open Browser    http://google.com    chrome
    Maximize Browser Window

Arguments

Một keyword có thể nhận tham số, và tham số này có thể là một giá trị cố định hoặc một biến. Cũng như cách mà một function trong Python, việc định nghĩa keyword sử dụng tham số đều cần đưa vào một hay nhiều parameter với [Arguments] như sau

*** Keywords ***
Open Browser To Page
    [Arguments]    ${url}    ${browser}
    Open Browser    ${url}    ${browser}

Và keyword này có thể được gọi thẳng với giá trị

Open Browser To Page    http://google.com    chrome

Hoặc gọi với một biến đã được khai báo

*** Variables ***
${URL}    http://google.com
${BROWSER}    chrome

*** Test Cases ***
Test
    Open Browser To Page    ${URL}    ${BROWSER}

Cũng có thể pass giá trị default cho tham số, trừ khi chúng ta gọi keyword với giá trị khác, thì giá trị default sẽ được sử dụng, giống hệt trong Python

*** Keywords ***
Open Browser To Page
    [Arguments]    ${url}    ${browser}=chrome
    Open Browser    ${url}    ${browser}

Return

Một keyword có thể trả về giá trị, và giá trị này có thể được sử dụng trong một keyword khác

*** Keywords ***
Calculate Sum
    [Arguments]    ${a}    ${b}
    ${sum}=    Evaluate    ${a}+${b}
    RETURN    ${sum}

Và keyword này có thể được sử dụng trong một keyword khác

*** Keywords ***
Test
    ${sum}=    Calculate Sum    1    2
    Log    ${sum}

Sử dụng keyword để thực hiện tính toán và trả về giá trị thật ra là một cái mà chúng ta nên tránh. Bản chất khả năng của Robot Framework cũng chỉ đơn giản gói gọn trong Python, vì nó phụ thuộc vào Python, vì thế các tác vụ như tính toán, vòng lặp, v.v... sẽ hoạt động chậm hơn trong Robot Framework. Vậy nên trong tình huống như trên, chúng ta nên viết một Library python để thực hiện tác vụ, mình sẽ hướng dẫn ngay ở phần dưới

Keywords from Self-defined Library

Một Library tự viết ra về cơ bản là một file python, và chúng ta có thể import nó vào Robot Framework để sử dụng. Ví dụ, mình có một file mylib.py như sau

# mylib.py
def calculate_sum(a, b):
    return a+b

Bây giờ, import nó vào trong Robot Framework

*** Settings ***
Library    mylib.py

*** Keywords ***
Test
    ${sum}=    Calculate Sum    1    2
    Log    ${sum}

Kết quả cũng sẽ cho tương tự như ở trên, nhưng tốc độ nhanh hơn nhiều so với việc đi viết trong Robot Framework.

Bạn cũng nên để ý cách gọi tên keyword, với tên function là calculate_sum trong python, thì tên keyword sẽ là Calculate Sum trong Robot Framework, với cách viết gọi là Snake Case tức là viết thường hết rồi ngăn cách bằng dấu gạch dưới, và vào Robot Framework thì các từ sẽ được tách ra với dấu cách và viết hoa chữ cái đầu. Hay ví dụ như

Dictionary trong Robot Framework cũng giống dictionary của python như cách list trong RB giống list của python, nhưng khác về cách khai báo, với dictionary thì sẽ dùng & thay vì @ như list.

Conclusion

Tóm lại, sau bộ bài viết

Và bài viết Keyword này, chúng ta đã có đủ kiến thức để viết một test suite đơn giản.

Task : Write a test case to verify the sum of two numbers - Hãy viết một test case để kiểm tra tổng của hai số

Hãy thử vào task trên, sau bài viết này mình sẽ đào sâu vào Browser Automation với SeleniumLibrary

Nguồn tham khảo