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