我正在使用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"]}
我想使用点符号,因为它更具可读性。 你们中有人知道为什么它不起作用吗?
答案 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}