Пользовательское ключевое слово Robot Framework только в тестовой настройке - PullRequest
0 голосов
/ 20 июня 2019

Есть ли в Robot Framework возможность разрешить выполнение пользовательского ключевого слова только в части Test Setup (или в качестве альтернативы в Test Teardown)?Предполагая, что у меня есть ключевое слово My Setup.Если My Setup выполняется в обычном режиме (т. Е. Не в настройке теста), проверка должна завершиться неудачей.RF документация о ключевых слов пользователя и просмотр StackOverflow не дали мне значимых результатов.

Например, документация во встроенной функции Robot Framework Run keyword if all tests passed гласит: «Попыткаиспользование его в любом другом месте приводит к ошибке ", поэтому мне было интересно, что должен быть какой-то способ применить это и к пользовательским ключевым словам.

Я попытался исправить это, проанализировав тестовый файл перед запускомвыполнение теста и проверка на наличие My Setup, которых нет в Test Setup.Это, однако, кажется очень громоздким, поэтому я ищу что-то вроде следующего:

def MySetup(self, some_arg):
    if MAGIC.not_inside_test_setup():
        raise AssertionError('"My Setup" can be executed only in Test Setup')

1 Ответ

1 голос
/ 20 июня 2019

Мне удалось решить эту проблему с помощью коллеги.Решение было следующим:

Предполагается, что ключевое слово My Setup определено в библиотеке с именем My Library.

  1. . С помощью прослушивателя проверьте, выполняется ли пользовательское ключевое слово My Setup.с помощью метода слушателя под названием start_keyword.Метод содержит информацию о том, выполняется ли ключевое слово как обычное ключевое слово или как ключевое слово Test Setup / Teardown.
  2. Если My Setup запускается как ключевое слово not-test-setup, в слушателе установлен глобальный флаг ошибки внутриMy Library должен быть установлен через экземпляр My Library
  3. В начале выполнения My Setup проверьте, установлен ли флаг глобальной ошибки в My Library;выдает ошибку, если установлено.

MyLibrary.py

SETUP_ERROR = None

class MyLibrary(object):

    def MySetup(self, some_arg):
        global SETUP_ERROR

        if SETUP_ERROR:
            raise AssertionError(SETUP_ERROR)

        # Otherwise continue with the setup

    def _SetError(self, error):
        global SETUP_ERROR
        SETUP_ERROR = error

Listener.py

from MyLibrary import MyLibrary

class MyListener(object):
    # ...
    def start_keyword(self, name, attributes):
        if name == 'MyLibrary.My Setup' and attributes['type'] != 'Setup':
            MyLibrary()._SetError('"My Setup" can be executed only in Test Setup')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...