首页 文章

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

提问于
浏览 754
1

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

  • 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}
    

相关问题