Setup and Teardown
Setup có nghĩa là chuẩn bị môi trường trước khi thực hiện test case, còn Teardown có nghĩa là dọn dẹp môi trường sau khi thực hiện test case.
Các Keyword sử dụng trong (Suite/Test) Setup sẽ mang tính chất thiết lập Precondition cho bài test, còn Teardown sẽ không phải mang tính chất thiết lập Postcondition đâu, mà sẽ là dọn dẹp môi trường để chuẩn bị cho bài test tiếp theo.
Setup
Setup sẽ được thực hiện trước khi bắt đầu một test case hoặc test suite, tuỳ thuộc vào scope của Setup.
Có 3 loại Setup chính:
Suite Setup: Setup sẽ được thực hiện trước khi bắt đầu một test suiteTest Setup: Setup sẽ được thực hiện trước khi bắt đầu một test case[Setup] Run Keyword: Setup sẽ được thực hiện trước khi bắt đầu một từ khoá
*** Settings ***
Test Setup Search RB
*** Test Cases ***
Test Case 1
Log Test Case 1
*** Keywords ***
Open Google
Open Browser http://google.com chrome
Search RB
[Setup] Open Google
Input Text name=q Robot Framework
Click Button name=btnK
Trong ví dụ trên, Test Setup sẽ thực hiện từ khoá Search RB trước khi bắt đầu test case Test Case 1, và từ khoá Search RB sẽ thực hiện từ khoá Open Google trước khi thực hiện các hành động khác do [Setup] của từ khoá Search RB gọi ra Open Google.
*** Settings ***
Suite Setup Open Google
Test Setup Search RB
*** Test Cases ***
Test Case 1
Log Test Case 1
*** Keywords ***
Open Google
Open Browser http://google.com chrome
Search RB
Input Text name=q Robot Framework
Click Button name=btnK
Ở đây, với Suite Setup là Open Google, thì từ khoá Open Google sẽ được thực hiện trước khi bắt đầu test suite, và từ khoá Search RB sẽ thực hiện trước khi bắt đầu test case Test Case 1.
Tác dụng của hai kiểu viết này là giống nhau, nhưng ở một số ví dụ khác khi có nhiều test case hơn thì việc áp dụng đúng scope của setup rất quan trọng.
Sau đây là những quy luật mình luôn nắm khi sử dụng Setup theo các scope
Hãy hiểu Scope của Setup như là vị trí mà keyword được viết ra sẽ inject vào trong test case
Ví dụ với 2 Test Case như sau
*** Test Cases ***
[TestCase 1]
[Keyword 1]
...
[Keyword n]
[TestCase 2]
[Keyword 1]
...
[Keyword n]
Thì với Suite Setup và Test Setup, vị trí của keyword sẽ được inject vào như sau
*** Test Cases ***
[Suite Setup]
[TestCase 1]
[Test Setup]
[Keyword 1]
# ...
[Keyword n]
[TestCase 2]
[Test Setup]
[Keyword 1]
# ...
[Keyword n]
Lý do mình theo cách hiểu này là vì bản chất từ khoá được dùng ở Test Setup sẽ trở thành một phần của test case, nó sẽ được thực hiện trước các keywords khác của test case, còn Suite Setup sẽ được thực hiện trước khi bắt đầu test case đầu tiên và bản chất của nó nằm ngoài test case.
Quy tắc RB xử lý khi Fail Setup
- Nếu Test Setup fail, thì cả test case sẽ fail (các keywords ở dưới sẽ không được thực hiện)
- Nếu Suite Setup fail, thì cả test suite sẽ fail, các test case ở trong sẽ được đánh là fail mặc dù các keyword trong test case không được thực hiện
- Nếu Suite Setup chứa nhiều keywords, tất cả các keywords đều sẽ được thực hiện lần lượt, nếu một keyword fail thì các keyword sau sẽ không được thực hiện
- Nếu ở trong Test Case có Test Setup, thì Test Setup của case sẽ thay thế cái được viết trên
***Settings***
Typical question: What is the (Suite/Test) Setup? - Suite Setup và Test Setup là gì?
Typical question: What is the difference between Suite Setup and Test Setup? - Sự khác biệt giữa Suite Setup và Test Setup là gì?
Teardown
Teardown sẽ được thực hiện sau khi kết thúc một test case hoặc test suite, tuỳ thuộc vào scope của Teardown.
Bản chất của Teardown là để dọn dẹp, hoặc là dọn đường cho test case tiếp theo, hoặc dọn dẹp bộ nhớ của toàn bộ test suite.
Cũng có 3 loại Teardown chính:
Suite Teardown: Teardown sẽ được thực hiện sau khi kết thúc một test suiteTest Teardown: Teardown sẽ được thực hiện sau khi kết thúc một test case[Teardown] Run Keyword: Teardown sẽ được thực hiện sau khi kết thúc một từ khoá
*** Settings ***
Suite Setup Open Google
Suite Teardown Close Browser
Test Setup Search RB
Test Teardown Go To Google
*** Test Cases ***
Test Case 1
Log Test Case 1
*** Keywords ***
Open Google
Open Browser http://google.com chrome
Search RB
Input Text name=q Robot Framework
Click Button name=btnK
Go To Google
Go To http://google.com
Ở đây, Suite Teardown sẽ thực hiện từ khoá Close Browser sau khi kết thúc test suite, và Test Teardown sẽ thực hiện từ khoá Go To Google như là một cách để đưa trình duyệt về trang gốc sau khi kết thúc test case Test Case 1.
Tương tự như Setup, Teardown cũng có scope, và cũng có quy tắc xử lý khi fail tương tự như Setup.
Ví dụ với 2 Test Case như sau
*** Test Cases ***
[TestCase 1]
[Keyword 1]
...
[Keyword n]
[TestCase 2]
[Keyword 1]
...
[Keyword n]
Thì với Suite Teardown và Test Teardown, vị trí của keyword sẽ được inject vào như sau
*** Test Cases ***
[TestCase 1]
[Test Setup]
[Keyword 1]
# ...
[Keyword n]
[Test Teardown]
[TestCase 2]
[Test Setup]
[Keyword 1]
# ...
[Keyword n]
[Test Teardown]
[Suite Teardown]
Cũng như Setup, Suite Teardown nằm ở ngoài test case, và Test Teardown nằm trong test case.
Quy tắc RB xử lý khi Fail Teardown
- Teardown sẽ luôn được thực hiện, bất kể chuyện gì xảy ra trong test case hoặc test suite
- Nếu Test Teardown fail thì test case sẽ được đánh là fail
- Nếu Suite Teardown fail thì test suite sẽ được đánh là fail và toàn bộ test case trong nó cũng sẽ fail
- Tất cả keywords trong Teardown sẽ được thực hiện, nếu một keyword fail thì các keyword sau vẫn sẽ được thực hiện.
- Nếu ở trong Test Case có Test Teardown, thì Test Teardown của case sẽ thay thế cái được viết trên
***Settings***
Typical question: What is the (Suite/Test) Teardown? - Suite Teardown và Test Teardown là gì?
Typical question: What is the difference between Suite Teardown and Test Teardown? - Sự khác biệt giữa Suite Teardown và Test Teardown là gì?
Typical question: How failure of Setup and Teardown is handled in Robot Framework? - Làm thế nào để xử lý khi Setup và Teardown fail trong Robot Framework?
Tổng kết
Tổng kết lại, hãy nhìn vào Test Suite dưới đây
*** Settings ***
Library SeleniumLibrary
Suite Setup Open Browser http://google.com chrome
Suite Teardown Close Browser
Test Setup Open Browser http://youtube.com chrome
Test Teardown Open Browser http://google.com chrome
*** Test Cases ***
Test Case 1
Log Test Case 1
Test Case 2
[Setup] Open Browser http://facebook.com chrome
Log Test Case 2
Test Case 3
Log Test Case 3
[Teardown] Close Browser
Test Case 4
Log Test Case 4
Quá trình diễn biến test case sẽ là gì?
Dễ thấy, quá trình đầy đủ của test suite sẽ theo thứ tự sau:
Mở Trình Duyệt Chrome trang https://google.com
Mở Trình Duyệt Chrome trang https://youtube.com
Mở Trình Duyệt Chrome trang https://google.com
Mở Trình Duyệt Chrome trang https://facebook.com
Mở Trình Duyệt Chrome trang https://google.com
Mở Trình Duyệt Chrome trang https://google.com
Đóng Trình Duyệt Chrome
Mở Trình Duyệt Chrome trang https://youtube.com
Mở Trình Duyệt Chrome trang https://google.com
Đóng Trình Duyệt Chrome
Sau đây là log của test suite

Log
Hết thắc mắc và mông lung chưa ạ?