Bài viết này của mình sẽ ngắn thôi, vì nội dung nó khá đơn giản.

Resource và Library là 2 khái niệm quan trọng trong Robot Framework, giúp mở rộng một file test ra nhiều file khác nhau, giúp cho việc quản lý và bảo trì test case trở nên dễ dàng hơn. Sau này mình sẽ viết về cách ứng dụng POM - Page Object Model, và trong Robot Framework, yếu tố để thực hiện POM chính là Resource và Library.

Library

Bản chất một file Library là một file định nghĩa các Keywords. Nó sẽ là một file Python chứa định nghĩa các Keywords như là các hàm.

Ví dụ, nếu chúng ta sử dụng Standard Library bao gồm:

Các Standard Library này vốn là bọc lại của các module Python, giúp chúng ta thực hiện các hành động cơ bản như kiểm tra, so sánh, thao tác với file, thao tác với hệ thống, v.v...

Thì chúng ta sẽ khai báo như sau:

*** Settings ***
Library    Collections
Library    DateTime
Library    Dialogs
Library    OperatingSystem
# ...

Và các file Library này sẽ tương ứng là các file Python chứa định nghĩa các Keywords: Collections.py, DateTime.py, Dialogs.py, OperatingSystem.py, ...

Người dùng cũng có thể tự viết ra các Library của riêng mình, và sử dụng trong file test case của mình. Ví dụ, chúng ta có file my_library.py chứa các Keywords như sau:

def my_keyword():
    print("This is my keyword")

Sau đó, chúng ta sẽ khai báo trong file test case như sau:

*** Settings ***
Library    my_library.py

*** Test Cases ***
Test Case 1
    My Keyword

Quy luật gọi tên của các function từ file python ra file robot là: my_keyword sẽ được gọi là My Keyword.

Tức là mỗi từ trong tên function sẽ được viết hoa chữ cái đầu tiên, và giữa các từ sẽ có khoảng trắng. Ví dụ: my_keyword -> My Keyword. Vậy nên để thống nhất cách đặt tên, tốt nhất là bạn nên đặt tên function trong file python theo quy luật viết thường và ngăn cách bằng gạch dưới

Ngoài ra thì cũng có những External Library như SeleniumLibrary, AppiumLibrary, v.v... nhưng về cơ bản ý tưởng của nó giống như Library được tạo ra bởi người dùng, chỉ là chúng được viết sẵn và bố trí cụ thể, chỉ cần gọi

*** Settings ***
Library    SeleniumLibrary

Điều kiện của một file Library:

Resource

Resource là một file chứa các Keywords, Test Cases, Variables, ... mà bạn muốn sử dụng trong test case của mình.

Một file resource sẽ là một file robot, ví dụ, chúng ta có file test chính là test.robot, và file resource là resource.robot, thì chúng ta sẽ khai báo như sau:

# resource.robot
*** Settings ***
Library    SeleniumLibrary

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

Sau đó, sử dụng trong test.robot, mặc định 2 file này đang ở cùng 1 folder

# test.robot
*** Settings ***
Library    SeleniumLibrary
Resource    resource.robot

*** Test Cases ***
Test Case 1
    Open Google

Nếu 2 file này ở khác folder, thì chúng ta sẽ cần thực hiện khai báo đường dẫn tuyệt đối hoặc tương đối của file resource. Ưu tiên khai báo đường dẫn tương đối, vì khi chuyển project qua máy khác, thì đường dẫn tương đối sẽ không bị lỗi như tuyệt đối.

Ví dụ ./resources/resource.robot có nghĩa là file resource.robot nằm trong thư mục resources ở cùng cấp với file test.robot.

Hay ../resources/resource.robot có nghĩa là file resource.robot nằm trong thư mục resources ở cấp trên với file test.robot.

Điều kiện của một file resource:

Variables

Variables là một file chứa các biến, dùng nhiều nhất khi làm Browser Automation do cách chúng ta viết và lưu các locator trên một trang web sẽ là dùng file python hoặc file robot chứa các biến.

Ví dụ, với một file python chứa các biến như sau:

# variables
username = "duyvan"
password = "123456"

Khi sử dụng các biến này trong RB, đầu tiên nó cần được import vào với Variables trên *** Settings *** như sau:

*** Settings ***
Variables    variables.py

Sau đấy, giả sử chúng ta có trường điền username với id là username và password với id là password, thì chúng ta sẽ sử dụng như sau:

*** Test Cases ***
Test Case 1
    Input Text    id=username    ${username}
    Input Text    id=password    ${password}

Lý do tại sao lại có syntax ${username} là vì nó là cách để gọi biến trong RB, mình sẽ viết cụ thể trong một bài viết khác.

Điều kiện của một file Variables:

Nguồn tham khảo