簡體   English   中英

如何在套件設置中運行測試用例?

[英]How to run test cases as part of suite setup?

我正在使用robotframework運行一堆python函數作為測試用例。 我將一堆測試用例標記為設置,並將一堆測試用例標記為清理。 我在機器人中使用-i選項來運行各種測試用例。 通常,我運行-i setup進行設置,並運行-i cleanup清理測試套件。 但是,如果安裝中的測試用例失敗,則所有測試用例仍將執行。 我正在尋找一種將一堆測試用例標記為套件安裝和套件拆卸的功能,並且如果套件安裝自動失敗,則在不運行任何測試用例的情況下運行套件拆卸。 我嘗試了帶有關鍵字的Suite Setup選項,但是與此同時,我將測試用例移到了關鍵字部分,並且失去了標簽功能。

原始機器人文件

*** Settings ***

Suite Setup
Suite Teardown

*** Test Cases ***

setup_1
    [Tags]    setup    smoke    1
    ${result}   ${result_str} =     test.test.TestSetup.test_setup_1
    Should Be Equal  ${result}  ${TRUE}
setup_2
    [Tags]    setup    smoke    1
    ${result}   ${result_str} =     test.test.TestSetup.test_setup_2
    Should Be Equal  ${result}  ${TRUE}
setup_3
    [Tags]    setup    smoke    1
    ${result}   ${result_str} =     test.test.TestSetup.test_setup_3
    Should Be Equal  ${result}  ${TRUE}

TestCase 1
    [Tags]      tc
    ${result}   ${result_str} =     test.test.my_func.test_func_1
    Should Be Equal  ${result}  ${TRUE}
TestCase 2
    [Tags]      tc
    ${result}   ${result_str} =     test.test.my_func.test_func_2
    Should Be Equal  ${result}  ${TRUE}

cleanup_1
    [Tags]    cleanup    smoke    1
    ${result}   ${result_str} =     test.test.TestCleanup.test_cleanup_1
    Should Be Equal  ${result}  ${TRUE}
cleanup_2
    [Tags]    cleanup    smoke    1
    ${result}   ${result_str} =     test.test.TestCleanup.test_cleanup_2
    Should Be Equal  ${result}  ${TRUE}

帶有關鍵字的機器人文件

*** Settings ***
Suite Setup     Run keywords
...     setup_1
...     AND setup_2
...     AND setup_3

Suite Teardown  Run keywords
...     cleanup_1
...     AND cleanup_2

*** Keywords ***
setup_1
    [Tags]    setup    smoke    1
    ${result}   ${result_str} =     test.test.TestSetup.test_setup_1
    Should Be Equal  ${result}  ${TRUE}
setup_2
    [Tags]    setup    smoke    1
    ${result}   ${result_str} =     test.test.TestSetup.test_setup_2
    Should Be Equal  ${result}  ${TRUE}
setup_3
    [Tags]    setup    smoke    1
    ${result}   ${result_str} =     test.test.TestSetup.test_setup_3
    Should Be Equal  ${result}  ${TRUE}

cleanup_1
    [Tags]    cleanup    smoke    1
    ${result}   ${result_str} =  test.test.TestCleanup.test_cleanup_1
    Should Be Equal  ${result}  ${TRUE}
cleanup_2
    [Tags]    cleanup    smoke    1
    ${result}   ${result_str} =     test.test.TestCleanup.test_cleanup_2
    Should Be Equal  ${result}  ${TRUE}

*** Test Cases ***
TestCase 1
    [Tags]      tc
    ${result}   ${result_str} =     test.test.my_func.test_func_1
    Should Be Equal  ${result}  ${TRUE}
TestCase 2
    [Tags]      tc
    ${result}   ${result_str} =     test.test.my_func.test_func_2
    Should Be Equal  ${result}  ${TRUE}

有什么方法可以將標記有安裝程序的測試標記為Suite Setup,並將標記有清理標記的測試標記為Suite Teardown,並且仍然能夠在安裝和拆卸中運行單個測試?

如何在套件設置中運行測試用例?

你不能 測試用例不是您可以從其他對象顯式調用的對象。

如果要創建需要在套件設置中運行的可重用組件,則它必須是用戶關鍵字而不是測試用例。

如果您希望整個套件在單個測試用例失敗時停止運行,則可以使用-X / --exitonfailure命令行選項。 另一個選擇是創建一個調用內置關鍵字致命錯誤的測試拆卸項

Suite SetupSuite Teardown旨在在執行測試用例之前和之后執行一系列步驟。 您可以認為Suite Setup類似於手動測試用例中的Pre-requisite/Pre-condition 僅當設置失敗時才執行整個套件才有意義(對於機器人而言就是如此)。

如果套件設置和拆卸中的關鍵字本身就是測試用例,建議您將它們作為另一個套件中的測試用例執行。

如果滿足以下假設,則有兩種解決方法:

假設:

  1. 套件設置和拆卸中的各個關鍵字彼此獨立(即),如果套件設置中有2個關鍵字,即Keyword 1Keyword 2 ,則它們彼此不依賴。 對於套件拆解中的關鍵字也是如此。
  2. 測試用例僅取決於設置和拆卸關鍵字之一(即),如果套件設置中有2個關鍵字,即Keyword 1Keyword 2 ,則每個測試用例僅取決於一個關鍵字。

Workaround 1:

使用“ Test Setup和“ Test Teardown 設置 這允許您僅使設置失敗的測試用例失敗,然后在失敗時重新運行。

Workaround 2:

將測試用例移至2個不同的套件,並使用Suite SetupSuite Teardown來配置各自的節點。

注意:在以上兩種情況下,您都必須將設置和拆卸過程中的測試用例移至其他套件。 是的,您最終將需要維護多個套件,但是我相信這樣可以更輕松地維護這樣一個腳本,而不用弄亂一個套件。

如果上述假設無效,則在套件中重新運行失敗的測試確實沒有意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM