我有一组测试场景(比如10),我想针对不同的国家执行(比如3)。
发布于 2021-01-30 11:06:00
我的第一个建议是带for循环的模板。这样您就不必管理失败,每个迭代都将独立于另一个迭代。每个数据集都将与模板一起执行。注意,如果一个迭代失败,整个测试用例将被标记为失败,但是您将能够检查哪个迭代失败了。

下面是上面示例的代码:
*** Variables ***
@{COUNTRIES}    USA    UK
*** Test Cases ***
Test Scenario 1
    [Template]    Test Scenario 1 Template
    FOR    ${country}    IN    @{COUNTRIES}
        ${country}
    END
Test Scenario 2
    [Template]    Test Scenario 2 Template
    FOR    ${country}    IN    @{COUNTRIES}
        ${country}
    END
Test Scenario 3
    [Template]    Test Scenario 3 Template
    FOR    ${country}    IN    @{COUNTRIES}
        ${country}
    END
    
*** Keywords ***
Test Scenario 1 Template
    [Arguments]    ${country}
    Log    ${country}
    Run Keyword If    $country == 'UK'    Fail    Simulate failure.
Test Scenario 2 Template
    [Arguments]    ${country}
    Log    ${country}
    Run Keyword If    $country == 'USA'   Fail    Simulate failure.
Test Scenario 3 Template
    [Arguments]    ${country}
    Log    ${country}另一个选项基于这个回答,它在运行时动态地生成测试用例。只需要一个小的库也充当侦听器。。这个库可以有一个将被调用的start_suite方法,它将得到作为Python,robot.running.model.TestSuite的套件。然后,您可以使用此对象和机器人框架API以编程方式创建新的测试用例。
DynamicTestLibrary.py:
from robot.running.model import TestSuite
class DynamicTestLibrary(object):
    ROBOT_LISTENER_API_VERSION = 3
    ROBOT_LIBRARY_SCOPE = 'GLOBAL'
    ROBOT_LIBRARY_VERSION = 0.1
    def __init__(self):
        self.ROBOT_LIBRARY_LISTENER = self
        self.top_suite = None
    def _start_suite(self, suite, result):
        self.top_suite = suite
        self.top_suite.tests.clear() # remove placeholder test
    def add_test_case(self, name, keyword, *args):
        tc = self.top_suite.tests.create(name=name)
        tc.keywords.create(name=keyword, args=args)
        
    def add_test_matrix(self, data_set, test_scenarios):
        for data in data_set:
            for test_scenario in test_scenarios:
                self.add_test_case(f'{test_scenario} - {data}', test_scenario, data)
globals()[__name__] = DynamicTestLibrary机器人框架4.0的更新
由于4.0发行版中所做的向后不兼容更改(运行和结果模型已经更改。),如果您使用的是高于4.0的版本,则add_test_case函数应该更改如下。
def add_test_case(self, name, keyword, *args):
    tc = self.top_suite.tests.create(name=name)
     tc.body.create_keyword(name=keyword, args=args)在机器人文件中,添加一个Suite Setup,在其中可以使用国家列表和测试场景列表调用Add Test Matrix关键字,以生成每个组合的测试用例。这样,每个国家将有一个单独的测试用例--测试场景对,同时将所有内容都放在一个文件中。
test.robot:
*** Settings ***
Library        DynamicTestLibrary
Suite Setup    Generate Test Matrix
*** Variables ***
@{COUNTRIES}    USA    UK
*** Test Cases ***
Placeholder test
    [Documentation]    Placeholder test to prevent empty suite error. It will be removed from execution during the run.
    No Operation
    
*** Keywords ***
Generate Test Matrix
    ${test scenarios}=    Create List    Test Scenario 1    Test Scenario 2    Test Scenario 3
    DynamicTestLibrary.Add Test Matrix    ${COUNTRIES}    ${test scenarios}
Test Scenario 1
    [Arguments]    ${country}
    Log    ${country}
    Run Keyword If    $country == 'UK'    Fail    Simulate failure.
Test Scenario 2
    [Arguments]    ${country}
    Log    ${country}
    Run Keyword If    $country == 'USA'   Fail    Simulate failure.
Test Scenario 3
    [Arguments]    ${country}
    Log    ${country}这将是控制台上的输出:
# robot --pythonpath . test.robot
==============================================================================
Test
==============================================================================
Test Scenario 1 - USA                                                 | PASS |
------------------------------------------------------------------------------
Test Scenario 2 - USA                                                 | FAIL |
Simulate failure.
------------------------------------------------------------------------------
Test Scenario 3 - USA                                                 | PASS |
------------------------------------------------------------------------------
Test Scenario 1 - UK                                                  | FAIL |
Simulate failure.
------------------------------------------------------------------------------
Test Scenario 2 - UK                                                  | PASS |
------------------------------------------------------------------------------
Test Scenario 3 - UK                                                  | PASS |
------------------------------------------------------------------------------
Test                                                                  | FAIL |
6 critical tests, 4 passed, 2 failed
6 tests total, 4 passed, 2 failed
==============================================================================https://stackoverflow.com/questions/65963879
复制相似问题