Cấu trúc một file Robot

Cấu trúc của một file Robot sẽ gồm các Section, mỗi Section đảm nhiệm một phần nội dung của test file. Các Section cơ bản nhất của một file Robot sẽ gồm:

Settings

Phần Settings sẽ chứa các thông tin cấu hình cho test case.

*** Settings ***
Library    SeleniumLibrary

Hay ví dụ như sử dụng thêm RequestLibrary để thực hiện kiểm thử API

*** Settings ***
Library    SeleniumLibrary
Library    RequestsLibrary

Phương pháp Syntax cho đẹp mắt là sau khi gõ xong Library, chúng ta sẽ gõ tab một lần để tự động đặt 4 dấu cách phân tách giữa Library và tên thư viện. Nó cũng rất giống cách Python đặt khoảng trống indent là 4 dấu cách.

*** Settings ***
Library    SeleniumLibrary
Resource    resource.robot
Variables   variables.robot
Variables   variables_2.py

Đầu tiên, về Resource, các file được import dưới danh nghĩa Resource sẽ cũng phải là các file Robot, và chúng ta sẽ gọi các từ khoá, hàm từ các file Resource này trong các test case. Cụ thể nội dung của một file Resource mình sẽ nói ở bài viết sau, sẽ có một số nội dung cắt giảm mà một file Resource không được phép có so với một file test bình thường

Với Variables, có thể sử dụng hoặc một file robot hoặc một file Python hoặc không sử dụng. Các biến được khai báo trong file Variables sẽ được sử dụng trong toàn bộ test case. Cụ thể nội dung của một file Variables mình sẽ nói sau, tương tự như Resource, một file Variables robot sẽ có các nội dung không được phép có so với một file test bình thường. Còn đối với file python, cũng sẽ có một số lưu ý đặc biệt.

*** Settings ***
Library    SeleniumLibrary
Test Setup    Open Browser    https://google.com    chrome
Test Teardown    Close Browser

Ngoài ra có thể sử dụng Suite Setup, Suite Teardown, cách hoạt động của nó gần giống nhưng khác về scope, cụ thể cách sử dụng và ý nghĩa của từ khoá này mình sẽ nói ở một bài viết sau.

Nếu muốn nhiều keywords được thực hiện với Setup và Teardown, có thể tạo một keywords riêng ở dưới Section Keywords và gọi nó trong Test Setup và Test Teardown. Hoặc sử dụng Run Keywords

*** Settings ***
Library    SeleniumLibrary
Test Setup    Run Keywords    Open Browser    'https://google.com'    chrome
...    AND    Maximize Browser Window

Cách dễ nhất để thực hiện cách dòng và AND là gõ AND ở dòng bên trên rồi enter, Robot Framework sẽ tự động thêm ... vào dòng mới.

Hoặc nếu không phải gõ ..., rồi tab, AND rồi tab

Ngoài ra có một số từ khoá khác như Tags, Documentation, Metadata mà có thể sẽ có một bài viết mình viết riêng cho chúng nó, hoặc bạn có thể đọc trên doc của Robot Framework tại đây.

Variables

Tại phần Variables là chỗ chúng ta khai báo các biến dùng chung cho toàn bộ test case.

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

Và sử dụng các biến này trong test case

*** Test Cases ***
Test Case 1
    Open Browser    ${URL}    ${BROWSER}

Cụ thể cách khai báo biến và sử dụng từng loại mình sẽ viết ở một bài khác. Nhưng chung quy lại phần Variables này thường là để khai báo các biến dùng trực tiếp cho các argument của từ khoá thuộc về test case mà chúng ta thường xuyên thay đổi giá trị.

Ví dụ, có một test case để test phần mềm đăng nhập, thì với hai trường username và password, để test các bộ giá trị đăng nhập, chúng ta sẽ có một từ khoá là Input Text. Từ khoá này nhận 2 arguments, một là locator để xác định vị trí của trường điền username hoặc password, hai là giá trị điền vào.

Thì argument chính là một biến, và chúng ta sẽ khai báo biến này ở phần Variables. Còn argument thứ nhất không thay đổi, nên chúng ta sẽ không khai báo nó ở phần Variables mà ở file Resource.

Test Cases

Test Cases là phần chính của một file Robot, nó sẽ chứa các test case, mỗi test case sẽ bắt đầu bằng tên của test case, có thể sử dụng khoảng trống để phân tách các từ, đồng thời có [] để đặt code name cho test case.

Syntax của một test case là như sau:

*** Test Cases ***
Test Case 1
    Open Browser    https://google.com    chrome
    Maximize Browser Window
    Element Should Be Visible    //input[@name='q']
    Close Browser

Test Case 2
    Open Browser    https://google.com    chrome
    Maximize Browser Window
    Input Text    //input[@name='q']    Robot Framework
    Click Button    //input[@name='btnK']
    Element Should Be Visible    //div[@id='result-stats']
    Close Browser

Ngăn cách giữa keyword và các argument cần tối thiểu 2 dấu cách

Nội dung của test case cũng cần indent tối thiểu 2 dấu cách so với tên test case.

Chúng ta sử dụng 4 dấu cách để indent, hay tương đương với 1 tab làm quy ước.

Keywords

Section Keywords sẽ chứa các từ khoá, các hàm dùng chung cho toàn bộ test case, các keywords này có thể được gọi trong các test case hoặc gọi qua lại với nhau.

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

Search For
    [Arguments]    ${keyword}
    Input Text    //input[@name='q']    ${keyword}
    Click Button    //input[@name='btnK']
    Element Should Be Visible    //div[@id='result-stats']

Các keyword có thể lấy vào các Arguments, và chúng ta sẽ gọi các keyword này trong các test case kèm theo giá trị của Arguments.

*** Test Cases ***
Test Case 1
    Open Google
    Search For    Robot Framework

Các keyword cũng có thể gọi qua lại nhau, ví dụ

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

Search For
    [Arguments]    ${keyword}
    Open Google
    Input Text    //input[@name='q']    ${keyword}
    Click Button    //input[@name='btnK']
    Element Should Be Visible    //div[@id='result-stats']

Trong ví dụ trên thì Search For đã gọi lại keyword Open Google để mở trang Google trước khi thực hiện các hành động khác.

Cần tuyệt đối tránh gọi keywords theo vòng tròn, nếu không test case sẽ rơi vào vòng luân hồi 7749 kiếp không thể siêu thoát

Vậy cuối cùng, chúng ta có một test file hoàn chỉnh là

*** Settings ***
Library    SeleniumLibrary

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

*** Test Cases ***
Test Case 1
    Open Google
    Search For  Robot Framework

*** Keywords ***
Open Google
    Open Browser    ${URL}    ${BROWSER}
    Maximize Browser Window

Search For
    [Arguments]    ${keyword}
    Open Google
    Input Text    //input[@name='q']    ${keyword}
    Click Button    //input[@name='btnK']
    Element Should Be Visible    //div[@id='result-stats']

Bạn hãy thử chạy test file này xem

Typical question: What is the structure of a Robot file? - Cấu trúc của một file Robot là gì?

Typical question: What is the Settings section? - Section Settings là gì?

Typical question: how many ways to perform multiple action in Test Setup and Test Teardown? - Có bao nhiêu cách để thực hiện nhiều hành động trong Test Setup và Test Teardown?

Nguồn tham khảo