如果第一个键是数字,则点阵标记无效,RF 3.0.4嵌套字典语法错误

时间:2018-12-10 10:07:10

标签: dictionary robotframework

我正在使用rf 3.0.4.进行了升级,原因是点表示法升级了(在我使用rf 2.9之前)。 我的问题是,当我想访问嵌套的字典项并且第一个键(它是db中的id)是一个数字时,出现语法错误。

我有一个嵌套的字典:&{Attributes}

所以我想做什么:

${Attributes.1000.name}

我得到的语法错误:

解析变量'${Attributes.1000.name}' failed: SyntaxError: invalid syntax (<string>, line 1)

什么起作用:

${Attributes["1000"]["name"]}

我想使用点符号,因为它更具可读性。 你们中有人知道为什么它不起作用吗?

1 个答案:

答案 0 :(得分:3)

在我看来,这是Robot Framework的限制。当字典键项目以数字开头(甚至是字符串)时,它将失败。在下面的两个测试用例中显示了这一点。

对我来说,这听起来像是一个缺陷,您可能希望将此作为项目的GitHub issue log.

的问题进行记录
*** Settings ***
Library    Collections    

*** Variables ***
${name}             MyName
&{person}           name=${name} 
&{person_valid}     A1000=${person}    A2000=${person}
&{person_invalid}   1000A=${person}    2000A=${person}

*** Test Cases ***
TC - Valid
    ${pers}           Set Variable    ${person_valid.A1000}
    Dictionaries Should Be Equal    ${pers}    ${person}     

    ${pers_name_1}    Set Variable    ${person_valid["A1000"]["name"]}
    Should Be Equal As Strings    ${pers_name_1}    ${name}     

    ${pers_name_2}    Set Variable    ${person_valid.A1000.name}
     Should Be Equal As Strings    ${pers_name_2}    ${name}     

TC - Fails
    Run Keyword And Expect Error    
    ...    Resolving variable '\${person_invalid.1000A}' failed: SyntaxError: invalid syntax (<string>, line 1)   
    ...    Set Variable    ${person_invalid.1000A}    

    Run Keyword And Expect Error    
    ...    Resolving variable '\${person_valid.1000A.name}' failed: SyntaxError: invalid syntax (<string>, line 1)   
    ...    Set Variable    ${person_valid.1000A.name}