RF 3.0.4嵌套字典语法错误,如果第一个键是数字,点表示法不起作用

我正在使用 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)

2 years ago

在我看来,它是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}