Есть ли способ присвоить переменной в Robot Framework значение python, не используя ее в качестве аргумента? - PullRequest
0 голосов
/ 10 февраля 2020

Мое ключевое слово робота выглядит следующим образом:

${HW_list}  Get_hw_list  ${file}
Run process   python    python_test.py 

Внутри моего python_test.py

from robot.libraries.BuiltIn import BuiltIn
List_of_modules = BuiltIn().get_variable_value("${HW_list}")

У меня появляется ошибка, говорящая,

робот. library.BuiltIn.RobotNotRunningError: Невозможно получить доступ к контексту выполнения

Я пытался найти похожие проблемы, но не могу найти ошибку. У меня также есть RF == 3.1.2, так как в 1 посте, я думаю, была проблема, которая была исправлена ​​в этой версии.

Ответы [ 2 ]

2 голосов
/ 10 февраля 2020

Поскольку вы запускаете python_test.py как отдельный процесс, вы не можете напрямую использовать переменные или ключевые слова робота в отдельном процессе.

Если вы не хотите передавать значение в качестве аргументов, вы придется использовать какой-то другой метод. Например, вы можете установить переменную окружения, и ваш скрипт получит данные из окружения. Это можно использовать только для передачи строк.

Другой вариант - ваш сценарий робота записывает данные в файл или базу данных, и ваш сценарий считывает этот файл или базу данных, чтобы получить значение.

2 голосов
/ 10 февраля 2020

Run process запустит ваш модуль в отдельном интерпретаторе. Вот почему он не может найти контекст выполнения.

Вместо этого выполните следующее:

  1. Создайте пользовательское ключевое слово из кода вашего модуля:
from robot.libraries.BuiltIn import BuiltIn

def my_custom_keyword():
    List_of_modules = BuiltIn().get_variable_value("${HW_list}")
Импортируйте модуль как Library в коде вашего робота:
*** Settings ***
Library    python_test.py
Используйте ключевое слово в своем тесте вместо Run process:
${HW_list}  Get_hw_list  ${file}
My Custom Keyword
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...