Robot Framework, эквивалент pytest.fixture
-
21-12-2019 - |
Вопрос
Функция pytest, которая мне очень нравится: pytest.fixture который допускает внедрение зависимостей.В качестве примера я могу использовать приспособление, вводящее новую случайную строку. silly_string
в любую функцию, которая в этом нуждается:
conftest.py:
@pytest.fixture(scope='function')
def silly_string(request):
return ''.join(random.choice(string.ascii_lowercase) for _ in range(5))
test_strings.py
def test_string_length(self, silly_string)
assert len(silly_string) == 5
Надуманный пример, очевидно.
Мне не известны какие-либо аналогичные функции в Robot Framework.В настоящее время я создаю новую переменную, используя ключевое слово, а затем передаю эту переменную в качестве параметра.Было бы неплохо, если бы этот параметр вводился автоматически.
Существует ли в Robot Framework механизм для аналогичного внедрения зависимостей?
Решение
Нет, в роботе нет ничего встроенного, чтобы делать то, что вы хотите.
Если вам нужны строки, генерируемые во время выполнения, вы можете использовать расширенный синтаксис переменных.Например, если у вас есть переменная робота ${v}
который содержит ссылку на объект Python, вы можете сделать что-то вроде этого:
| | ${v}= | Get reference to v
| | log | Hello ${v.silly_string()}`
Вышеупомянутое вызовет silly_string
метод объекта, на который указывает ${v}
.Ключевое слово Get reference to v
будет написанное вами ключевое слово на основе Python, которое возвращает объект с silly_string
метод.