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:

*** 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 SetupTest 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

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:

*** 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 TeardownTest 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

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
Log

Log

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

Nguồn tham khảo