Bài viết này mình sẽ chỉ nói nhanh qua nội dung liên quan đến Setting trong Robot Framework. Sẽ có hai phần chính mà bạn cần quan tâm, Setting của Test Suite và Setting của Test Case + Keyword.
Setting của Test Suite
Setting của Test Suite sẽ được đặt trong section Settings ở đầu file robot, như đã nêu ở các bài viết trước, cái mà mình muốn đi qua nhanh trong bài viết này là
- Name
- Documentation
- Metadata
- Tags
- Một cái mới mình chưa đề cập là Test Template
- Test Timeout
Ngoài ra các mục khác của Settings như Library, Resource, Variables, Suite Setup, Suite Teardown cũng là Suite Setting nhưng mình sẽ không nói đến ở đây.
Name
Setting Name trong Test Suite Settings sẽ cho phép đặt tên cho Test Suite, thật sự thì tính năng này hơi thừa, vì tên của Test Suite sẽ default là do cách đặt tên file. Tuy nhiên, có thể sử dụng để đặt tên Name để cho Test Suite một cái tên cụ thể hơn.
*** Settings ***
Name My Test Suite
Tên của Test Suite vốn là tên của file robot theo quy luật snake case, vậy thì khi được đưa vào trong Robot Framework sẽ được chuyển thành dạng Title Case, tức là các từ viết hoa chữ cái đầu và ngăn bằng dấu cách
Một test suite có thể được đặt một thứ tự được thực hiện trong một chuỗi các test suite bằng cách thêm tiền tố là số 01__, 02__, 03__ vào tên file của test suite. Và tiền tố này sẽ không được tính vào tên của test suite. Tức là nếu 01__My Test Suite thì tên của test suite vẫn là My Test Suite, tiền tố 01__ chỉ có tác dụng sắp xếp thứ tự của test suite trong folder
Chúng ta lại không thể thực hiện đặt tiền tố thực hiện test suite với Name để đạt được mục đích tương tự, lý do là vì bản chất các test suite vẫn được thực hiện từ trên xuống nhưng do đã được đặt tên với tiền tố là số, thì các test suite có số thấp hơn sẽ được xếp lên trên.
Tuy nhiên lý do khiến tính năng này vẫn hữu dụng là vì tên suite sẽ xuất hiện trong test log, nếu chúng ta muốn nó có một cái tên mỹ miều thì có thể sử dụng Name để đặt tên.
Documentation
Documentation Setting là một tính năng cho phép đưa ra mô tả cho Test Suite.
*** Settings ***
Documentation This is a test suite for testing the login page
Đầu tiên, Documentation có thể được thực hiện với các syntax đặc biệt, cấu trúc của nó không bị giới hạn bởi số dòng và số đoạn.
*** Settings ***
Documentation This is a test suite for testing the login page \nAnd this is the second line of the documentation
... And this is the third line of the documentation
Tiếp theo, nó cũng có thể có các style về chữ viết như bold, italic
| Unformatted | Formatted |
|---|---|
| *bold* | bold |
| _italic_ | italic |
| _*bold italic*_ | bold italic |
| ``code`` | code |
| *bold*, then _italic_ and finally ``some code`` | bold, then italic and finally some code |
| This is *bold\n |
on multiple\n
lines*. | This is bold
on multiple
lines. |
Các URL sẽ tự chuyển thành link trong log

URL trong Documentation
Cụ thể hơn, còn có format để show ảnh và bảng, thì bạn đọc ở đây: Robot Framework User Guide
Metadata
Metadata về cơ bản chỉ là một phương pháp khác để cung cấp thông tin tương tự như documentation, nhưng nó sẽ đi theo hướng key:value để cung cấp một số thông tin mang tính chất dạng như thông số
*** Settings ***
Metadata Author Duy Van
... Version 1.0
... Date 12/12/2024
Ngoài ra không có ý nghĩa gì hơn.
Tags
Tags là một công cụ rất mạnh, về cơ bản là gán nhãn cho test suite, hay chính xác hơn là gán nhãn cho các test case thuộc suite.
*** Settings ***
Test Tags smoke login
Với Test Tags như trên, chúng ta đang đặt cho Test Suite 2 tag là smoke (ám chỉ suite thuộc smoke test), và login (ám chỉ suite test login). Và Test Tags này đúng như tên của nó, là áp Tags cho toàn bộ Test Case thuộc suite, chứ không phải gán tag cho suite.
Cụ thể cách sử dụng Tags này đấy chính là khi chúng ta muốn chạy một số test case cụ thể, chúng ta có thể sử dụng Tags để chọn ra những test case cần chạy. Mình sẽ nói ở bài Test Execution
Test Template
Test Template về cơ bản là biến bài test thành một test data driven, tức là sẽ có một bộ data cần phải chạy test case, thì dùng Test template để thực hiện việc đấy.
Test Case sẽ được chạy lặp lại với từng bộ data. Cụ thể như thế nào thì mình sẽ viết rõ trong bài Data Driven Testing
Test Timeout
Cuối cùng là Test Timeout, tương tự như Tags, đây là set timeout - tức là thời gian tối đa mà một test case được chạy, nếu vượt quá thời gian này thì test case sẽ bị tính fail.
Việc áp dụng Test Timeout có hai lý do:
- Thứ nhất, nó hoạt động như việc chúng ta cho test case thời gian để chạy, trong tình huống có một cái gì đó cần phải load đầy đủ, thì các case có thể fail vì chưa kịp load xong.
- Thứ hai, nó hoạt động như việc ép một test case phải thành công trong một khoảng thời gian nhất định, tức là gần performance test, nếu một tính năng tốn quá nhiều thời gian để chạy, hay một trang web tốn quá lâu để load, thì Test case sẽ fail.
*** Settings ***
Test Timeout 30s
Chúng ta cũng có thể truyền vào phút 3 minutes, cụ thể cách đặt thời gian thì đọc ở đây Robot Framework User Guide
Nếu Test Case hoàn thành thì sẽ không cần phải đợi hết timeout mà sẽ chuyển sang test case tiếp theo.
Setting của riêng Test Case
Setting của Test Case sẽ có một số được đặt tự động trong Settings, một số cần phải đặt riêng hoặc có thể đặt lại trong Test Case
- Trong Test Case Settings: tất cả các setting này đều có thể đặt lại trong Test Case với ngoại lệ là Tags
- Tags
- Timeout
- Test Setup
- Test Teardown
- Đặt riêng trong Test Case
- Documentation
Tags
Tags trong Test Case sẽ giống như Tags trong Test Suite, nhưng nó sẽ áp dụng cho Test Case, và nó sẽ ghi bổ sung lên Tags được đặt trong Settings của Test Suite.
*** Settings ***
Test Tags smoke login
*** Test Cases ***
Test
[Tags] main page
Log Test
Test case tên Test sẽ có 3 tags là smoke, login, main page, do main page được đặt trong Test Case, nên nó sẽ ghi bổ sung lên Tags của Test Suite.
Nếu viết
*** Settings ***
Test Tags smoke login
*** Test Cases ***
Test
[Tags] -login
Log Test
Thì Test Case Test sẽ không có tag login mà chỉ có smoke do đã sử dụng dấu -
Nên đặt tag một cách đơn giản, chỉ nên bao gồm chữ cái không dấu, số và dấu gạch ngang, hoặc gạch dưới
Timeout
Với Timeout, nó sẽ giống như Timeout trong Test Suite, nhưng nó sẽ áp dụng cho Test Case, và nó sẽ ghi đè lên Timeout được đặt trong Settings của Test Suite.
*** Settings ***
Test Timeout 30s
*** Test Cases ***
Test
[Timeout] 1m
Log Test
Test Case Test sẽ có Timeout là 1 phút, không phải 30s như được đặt trong Test Suite.
Setup và Teardown
Như đã nói trong bài Setup and Teardown, Test Setup và Test Teardown nếu đã được ghi trên Settings, thì với [Setup] và [Teardown] nó sẽ áp dụng cho Test Case cụ thể nhưng nó sẽ ghi đè lên Setup và Teardown được đặt trong Settings của Test Suite.
*** Settings ***
Test Setup [Keyword 1]
Test Teardown [Keyword 2]
*** Test Cases ***
Test
[Setup] [Keyword 3]
Log Test
[Teardown] [Keyword 4]
Bình thường khi viết chúng ta nên đặt [Setup] ở đầu và [Teardown] ở cuối Test Case, và [Setup] và [Teardown] sẽ ghi đè lên Test Setup và Test Teardown.
Documentation
Với Documentation thì riêng, không chung chạ, không đụng hàng. Mỗi Test Case nếu có [Documentation] thì sẽ có Documentation riêng, và Documentation của Test Suite trên Settings sẽ không phải là Documentation của Test Case.
*** Test Cases ***
Test
[Documentation] This is a test case for testing the login page
Log Test
Setting của Keyword
Chức năng của các setting trong keyword cũng tương tự như trên Test Case, cụ thể, cũng có các setting sau:
[Documentation]: Mô tả cho keyword[Tags]: Tags cho keyword[Setup],[Teardown]: Setup và Teardown cho keyword[Timeout]: Timeout cho keyword
Còn riêng hai thằng [Arguments] và [Return] thì mình đã nói ở bài Keyword, nó cho phép biến Keyword thành như một hàm trong Python, lấy vào các tham số và trả về giá trị.