我正在尝试将此字符串列表用作单个关键字参数,但在运行时出现错误。
[错误]文件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}
答案 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变量将在所有情况下都可用。