Моя первая рекомендация - Шаблоны с циклами for. Таким образом, вам не нужно управлять сбоями, каждая итерация будет независимой от другой. Каждый набор данных будет выполнен с шаблоном. Обратите внимание, что если одна итерация не удалась, весь тестовый пример будет отмечен как неудачный, но вы сможете проверить, какая итерация не удалась.
![введите описание изображения здесь](https://i.stack.imgur.com/AREWA.png)
Вот код для приведенного выше примера:
*** 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 Robot Framework для создания нового теста. кейсы программно.
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
ОБНОВЛЕНИЕ для Robot Framework 4.0
Из-за обратно несовместимых изменений (Были изменены модели выполнения и результатов) в версии 4.0 функция add_test_case
должна быть изменена, как показано ниже, если вы используете версию выше 4.0.
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
==============================================================================
person
Bence Kaulics
schedule
30.01.2021