![](/img/trans.png)
[英]How to run robot framework test cases parallel and not Test Suite parallel?
[英]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 Setup
和Suite Teardown
旨在在執行測試用例之前和之后執行一系列步驟。 您可以認為Suite Setup
類似於手動測試用例中的Pre-requisite/Pre-condition
。 僅當設置失敗時才執行整個套件才有意義(對於機器人而言就是如此)。
如果套件設置和拆卸中的關鍵字本身就是測試用例,建議您將它們作為另一個套件中的測試用例執行。
如果滿足以下假設,則有兩種解決方法:
假設:
- 套件設置和拆卸中的各個關鍵字彼此獨立(即),如果套件設置中有2個關鍵字,即
Keyword 1
和Keyword 2
,則它們彼此不依賴。 對於套件拆解中的關鍵字也是如此。- 測試用例僅取決於設置和拆卸關鍵字之一(即),如果套件設置中有2個關鍵字,即
Keyword 1
和Keyword 2
,則每個測試用例僅取決於一個關鍵字。
Workaround 1:
使用“ Test Setup
和“ Test Teardown
設置 。 這允許您僅使設置失敗的測試用例失敗,然后在失敗時重新運行。
Workaround 2:
將測試用例移至2個不同的套件,並使用Suite Setup
和Suite Teardown
來配置各自的節點。
注意:在以上兩種情況下,您都必須將設置和拆卸過程中的測試用例移至其他套件。 是的,您最終將需要維護多個套件,但是我相信這樣可以更輕松地維護這樣一個腳本,而不用弄亂一個套件。
如果上述假設無效,則在套件中重新運行失敗的測試確實沒有意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.