Robot Framework: доступ к глобальным переменным робота из кода библиотеки Python?

у меня есть некоторые настройки типа global vars, к которым я хотел бы получить доступ из кода Python. Например:

pybot --variable RESULTS_PATH:/wherever/this/points test.txt

теперь, мой модуль logger.py файл должен знать results_path для правильной настройки.

Я знаю, что могу инициализировать регистратор с переменной, например

***Settings***
Library  logger  ${RESULTS_PATH}

и тогда в logger мне будет передан results_path:

 def __init__(self, results_path):
   # Whatever

однако проблема с этим способом для меня заключается в том, что я хочу получить доступ и использовать logger из кода Python и в тестовых случаях. Поэтому, если я настрою его таким образом, если я хочу использовать регистратор из кода Python, я столкнусь с той же проблемой необходимости results_path для правильной инициализации регистратора.

есть ли какие-либо функции в библиотеке Robot framework, которые позволили бы мне захватить значение ${RESULTS_PATH} из кода Python? Как правильно сделать что-то подобное?

прямо сейчас, мой обходной путь для проблемы-установить RESULTS_PATH как переменная окружения. Поэтому у меня есть что-то вроде:

Run как:

RESULTS_PATH=/wherever/this/points pybot test.txt
test.txt:
***Settings***
Library  logger
...
logger.py:
results_path = os.environ["RESULTS_PATH"]
# Other set up stuff

1 ответов


вы захотите использовать rf BuiltIn библиотека Для справки прочитайте документацию, как здесь. Это обеспечивает ключевые слова, которые встроены в рамки робота и поэтому должны надежно оставаться полезными:

from robot.libraries.BuiltIn import BuiltIn
results_path = BuiltIn().get_variable_value("${RESULTS_PATH}")