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:
- BuiltIn
- Collections
- DateTime
- Dialogs
- OperatingSystem
- Process
- Screenshot
- String
- Telnet
- XML
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:
- Tên file phải kết thúc bằng
.py, tức là nó bản chất phải là một file Python - Là một file python hợp lệ, tức là khi file python được import, nó sẽ được chạy một lần, nếu file python bị lỗi như lỗi syntax, lỗi import thư viện, ... thì file python sẽ không được chạy thành công và ngay từ trên IDE VSCode, nó sẽ báo không import được file python mặc dù đúng đường dẫn.
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:
- Tên file phải kết thúc bằng
.robot, tức là nó bản chất phải là một file robot - Có thể chứa các Section như
Settings,Variables,Keywords,Comments. Tuyệt đối không chứa SectionTest Cases. Vì resource không được sử dụng để chạy test case
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:
- Tên file phải kết thúc bằng
.py, tức là nó bản chất phải là một file Python. Hoặc có thể là một file RB chỉ chứa sectionVariables - File không được có lỗi syntax. Chúng ta sẽ không quá quan tâm đến việc có lỗi import library, vì thường một file variable sẽ không import thư viện nào cả mà chỉ chứa các biến và giá trị được gán