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

У меня есть глобальные вары с настройками типа, которые я бы хотел получить от кода 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

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

Существуют ли какие-либо функции в библиотеке рамок робота, которые позволили бы мне захватить значение ${RESULTS_PATH} из кода python? Каков правильный способ сделать что-то вроде этого?

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

выполните как:

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}")