Robotframework,如何定义动态变量名

Robotframework, How to define a dynamic variable name

我想定义具有动态名称的变量。

例如

${${FILE}{VAR}}    Create List      // ${FILE} = TEST, ${VAR} = VAR

然后我想获取名为 '${TESTVAR}' 的变量。

这是我的总结代码...

*** Settings ***

Library    SeleniumLibrary

Library    ExcelLibrary

Library    Collections

*** Variables ***

${VAR}=     VAR

*** Keywords ***

Open Document And Assign Variable

    [Arguments]     ${FILE}

    Open Excel Document filename=${FILE}    doc_id=doc_var


    ${${FILE}${VAR}}    Create List    # It doesn't work ..

Robot Framework 目前无法做到这一点。您可以使用 "variables inside variables" 来解析变量的值(请参阅 the documentation on this topic)但不能 resolve/set 变量本身的名称。

虽然我担心这会让人感到困惑。也许你可以解释你的动机,人们可以为你的问题想出另一种解决方案。

之前的回答不是很准确。 这可以通过机器人的“Variables inside variables”功能准确实现,如下所示:

FOR  ${idx}  IN RANGE  3
   ${var_name} =  Catenate  SEPARATOR=_  var  ${idx}
   Set Suite Variable  ${${var_name}}  ${idx}
END

你得到:
var_1=1
var_2=2
var_3=3

请注意,变量解析仅针对关键字参数发生(至少对于我使用的机器人版本 3.1.2),因此 'Set test variable'、'Set Suite Variable' 或 'Set Global Variable' 必须使用关键字。以下将不起作用:

FOR  ${idx}  IN RANGE  3
   ${var_name} =  Catenate  SEPARATOR=_  var  ${idx}
   ${${var_name}} =  ${idx}
END

结果:
找不到名称为“${${var_name}} =”的关键字。

对于您的列表案例,您只需创建一个列表变量并使用上述关键字将其重新分配给动态命名的变量