簡體   English   中英

有什么方法可以減少 Robot Framework 中的套件設置/拆卸和測試設置/拆卸樣板?

[英]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.

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