RobotFramework中list_of_dicts遍历输出异常及索引创建问题
问题原因与解决方法
现象原因
你遇到的问题核心在于@{list_of_dicts}的定义方式:
- 你用了RobotFramework的嵌入式表达式
${{ ... }},它会把整个列表表达式[{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 30}]的结果作为单个元素存入@{list_of_dicts}。也就是说,这个列表变量实际上只包含1个元素——就是那个包含两个字典的大列表,所以遍历的时候自然只会输出这个整体。 - 对比
@{PeopleDictList},它是直接将&{Person1}、&{Person2}作为独立元素添加到列表中,所以是正常的多元素列表,遍历能逐个输出元素。
解决方法
方法一:修正变量定义(推荐)
直接去掉嵌入式表达式,用RobotFramework原生的列表语法定义,把每个字典作为独立元素:
** Variables ** @{list_of_dicts} {'name': 'Alice', 'age': 25} {'name': 'Bob', 'age': 30}
这样@{list_of_dicts}就会成为包含两个字典元素的列表,原有的FOR循环就能正常逐个输出每个字典。
方法二:遍历展开嵌套列表(不修改变量定义时用)
如果不想改动变量定义,可以在遍历的时候,直接访问@{list_of_dicts}中唯一的元素(也就是目标列表),并展开它的元素:
FOR ${person} IN @{list_of_dicts[0]} Log to console ${person} END
或者用嵌入式表达式直接展开:
FOR ${person} IN ${{ @{list_of_dicts}[0] }} Log to console ${person} END
内容的提问来源于stack exchange,提问作者Programmer
相关产品推荐
相关产品推荐

