【问题标题】:Robot Framework - Passing List variables as keyword argument机器人框架 - 将列表变量作为关键字参数传递
【发布时间】:2018-08-18 11:48:41
【问题描述】:

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

[ ERROR ] 文件 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}

【问题讨论】:

  • 一方面,这不会创建列表变量。这会创建一个看起来像列表的字符串变量。

标签: python robotframework


【解决方案1】:

这不是在变量部分创建列表的语法;这是正确的 - 你在它的名字前面加上@,而不是$,并传递所有成员,至少用两个空格分隔:

*** 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,并且列表变量将在该调用之后可用于所有情况。

【讨论】:

    【解决方案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}
    

    【讨论】:

      猜你喜欢
      • 2020-03-17
      • 2018-07-03
      • 1970-01-01
      • 2017-12-23
      • 1970-01-01
      • 2013-11-08
      • 2020-01-26
      • 1970-01-01
      • 2020-08-30
      相关资源
      最近更新 更多