有没有一种方法可以将Robot Framework中的变量分配给python而不使用它作为参数?

时间:2020-02-10 10:44:00

标签: python robotframework

我的机器人关键字如下:

mean_test = test.mean()
limit = 5
df_filtered = test.mask(test.gt(mean_test.add(limit))|
                        test.lt(mean_test.sub(limit)),0)
print(df_filtered)
    A   B
0   0   0
1  20  40
2   0   0
3  15   0
4   0   0

在我的python_test.py中

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

我说错了

robot.libraries.BuiltIn.RobotNotRunningError:无法访问执行 上下文

我尝试搜索类似的问题,但是找不到错误的地方。我也有RF == 3.1.2,因为在1个帖子中,我认为此版本已解决了一个问题。

2 个答案:

答案 0 :(得分:2)

Run process将在单独的解释器中运行您的模块。这就是为什么它找不到执行上下文。

相反,请执行以下操作:

  1. 从模块代码中创建自定义关键字:
from robot.libraries.BuiltIn import BuiltIn

def my_custom_keyword():
    List_of_modules = BuiltIn().get_variable_value("${HW_list}")
  1. 将该模块作为Library导入您的机器人代码中:
*** Settings ***
Library    python_test.py
  1. 在测试中使用关键字,而不要使用Run process
${HW_list}  Get_hw_list  ${file}
My Custom Keyword

答案 1 :(得分:2)

由于python_test.py是作为单独的进程运行的,因此不能在单独的进程中直接使用机械手变量或关键字。

如果您不想将值作为参数传递,则必须使用其他方法。例如,您可以设置环境变量,并让脚本从环境中拾取数据。这只能用于传递字符串。

另一种选择是让您的机器人脚本将数据写入文件或数据库,然后让脚本读取该文件或数据库以获取值。