Robot Framework-将列表变量作为关键字参数传递

时间:2018-08-17 20:08:21

标签: python robotframework

我正在尝试将此字符串列表用作单个关键字参数,但在运行时出现错误。

  

[错误]文件Variables.robot中的错误变量名'$ {LIST_TEST_ATTRIBUTES}无效

我可以按住Ctrl键单击$ {LIST_TEST_ATTRIBUTES},它会在Variables.robot文件中找到该变量

Variables.robot

*** Variables ***
${LIST_TEST_ATTRIBUTES} = ["${access_engine_ip}","${analytics_engine_ip}","${AUT_Version}","${browser_type}","${ESX_server_ipaddress}","${device_type_x450_g2}"]

Test.robot
*** Settings ***
Resource Variables.robot
*** Test Cases ***
Initialize Test
    initialize test variables  ${LIST_TEST_ATTRIBUTES}

2 个答案:

答案 0 :(得分:2)

您真正想要的是在Python文件中定义列表。使用Python文件可简化变量的初始化。

或者更正像Bryan Oakley指出的语法。参见User Guide

示例:

Variables.py
LIST_TEST_ATTRIBUTES = ["${access_engine_ip}", "${analytics_engine_ip}", "${AUT_Version}", "${browser_type}", "${ESX_server_ipaddress}", "${device_type_x450_g2}"]

Test.robot
*** Settings ***
Variables         Variables.py

*** Test Cases ***
Initialize Test
    initialize test variables    ${LIST_TEST_ATTRIBUTES}

*** Keywords ***
initialize test variables
    [Arguments]    ${arg1}
    Log    ${arg1}

答案 1 :(得分:2)

这不是在“变量”部分中创建列表的语法;这是正确的方法-您在名称前加上@,而不是$,并让所有成员之间至少隔开两个空格:

*** Variables ***
@{LIST_TEST_ATTRIBUTES}    ${access_engine_ip}    ${analytics_engine_ip}   ${AUT_Version}   ${browser_type}    ${ESX_server_ipaddress}    ${device_type_x450_g2}

现在在您的示例中,所有成员都是对其他变量的引用。 LIST_TEST_ATTRIBUTES在创建套件时即被实例化-这意味着所有这些成员此时必须已经具有值-例如在导入的资源文件中定义,或在此文件中列表变量之前的某个位置。

如果不是这种情况-仍未设置它们的值,但是稍后会发生,您可以做一些不同的事情-使用关键字创建列表变量,并使用套件范围进行设置;然后在需要时调用关键字:

*** Variables ***
# the value of this variable is set through the "Set The Value Of The List Var" keyword
${LIST_TEST_ATTRIBUTES}    ${None}    # this "declaration" is not needed, but it's a good practice - thus you show to the other users there is this suite-level var

*** Keywords ***
Set The Value Of The List Var
    ${LIST_TEST_ATTRIBUTES}=     Create List    ${access_engine_ip}    ${analytics_engine_ip}   ${AUT_Version}   ${browser_type}    ${ESX_server_ipaddress}    ${device_type_x450_g2}
    Set Suite Variable    ${LIST_TEST_ATTRIBUTES}

在设置了其成员值之后,您将调用关键字Set The Value Of The List Var,并且在该调用之后,list变量将在所有情况下都可用。