![](/img/trans.png)
[英]Test Setup and Teardown for each test case in a test suite in Robot Framework using python
[英]Any way to reduce suite setup/teardown and test setup/teardown boilerplate in Robot Framework?
我正在做一個變得相當大和復雜的項目。
在我們的 Robot 測試文件中,我們現在有幾個套件設置/拆卸和測試設置/拆卸,用於處理第三方服務的生成模擬服務器、重置配置、覆蓋隨機值的生成以便我們的測試輸出保持可預測等。
由於每個測試文件所需的所有設置/拆卸,設置部分中的樣板數量變得非常愚蠢。
減少此測試設置樣板的“規范”方法是什么? 我不能簡單地將所有設置/拆卸語句收集到幾個關鍵字中並使用它們,因為測試套件並不都具有完全相同的要求。
例如,Robot Framework 中是否有任何方法可以讓測試庫(特別是 Python)添加設置/拆卸操作? 這樣我就可以在設置部分設置一些元數據,並讓測試庫根據需要添加設置/拆卸操作。
例如,我可以添加一個元數據標頭,如Metadata Uses services Twitter, Facebook
,然后測試庫將處理套件級別的設置/拆卸以生成和終止模擬服務器以及測試級別的設置/拆卸以清理它們的狀態.
您可以使用library scopes 。 例如,對於SUITE
范圍,將為每個套件創建一個新實例。
為每個測試套件創建一個新實例。 從測試用例文件創建並包含測試用例的最低級別的測試套件擁有自己的實例,而更高級別的套件都擁有自己的實例以進行可能的設置和拆卸。
這使您可以控制何時調用構造函數和析構函數。 然后這些,所以庫的構造函數和析構函數可以像“設置”和“拆卸”一樣工作。 您甚至可以將元數據設置移動到構造函數中。
以下是使用TEST
范圍的示例:
from robot.libraries.BuiltIn import BuiltIn
class lib(object):
ROBOT_LIBRARY_SCOPE = 'TEST'
ROBOT_LIBRARY_VERSION = 0.1
def __init__(self, x):
self.x = x
self.test_name = 'setup'
BuiltIn().set_suite_metadata('META', 'value', append=True)
BuiltIn().log_to_console(f'\n init {x}')
def kw(self, test_name):
self.test_name = test_name
BuiltIn().log_to_console(f' keyword {self.test_name} - {self.x}')
def __del__(self):
BuiltIn().log_to_console(f' del {self.test_name}')
globals()[__name__] = lib
測試機器人:
*** Settings ***
Library lib 111
*** Test Cases ***
Test 1
kw ${TESTNAME}
Test 2
kw ${TESTNAME}
Test 3
kw ${TESTNAME}
輸出:
Bence:[Robotframework/SO_material]# robot --pythonpath . test.robot
init 111
del setup
==============================================================================
Test
==============================================================================
Test 1
init 111
keyword Test 1 - 111
Test 1 | PASS |
------------------------------------------------------------------------------
del Test 1
Test 2
init 111
keyword Test 2 - 111
Test 2 | PASS |
------------------------------------------------------------------------------
del Test 2
Test 3
init 111
keyword Test 3 - 111
Test 3 | PASS |
------------------------------------------------------------------------------
del Test 3
Test | PASS |
3 critical tests, 3 passed, 0 failed
3 tests total, 3 passed, 0 failed
==============================================================================
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.