You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Robot Framework中如何遍历嵌套字典并访问内层字典值

Robot Framework 嵌套字典遍历报错修正方案

报错根因

  • 内层Get From Dictionary参数传值错误:你要从外层循环拿到的内层字典${value}中取值,但是代码里误写为还未定义的${value2}作为查询父对象,变量依赖解析异常触发了${key2}未找到的报错。
  • 若使用Robot Framework 3.x及更早版本,本身不支持在Run Keyword If的分支内直接嵌套FOR循环,也会触发语法类报错。

修正后的代码(适用于Robot Framework 4.0+版本)

FOR   ${key}   IN   @{dict.keys()}
    ${value}=    Get From Dictionary    ${dict}    ${key}
    ${type} =    Evaluate    type($value).__name__
    # 优化路径判断逻辑,避免非字符串类型报错
    ${is_path}=  Run Keyword If    ${type} == str    Evaluate    "/" in $value    ELSE    Set Variable    ${False}
    Log To Console   ${type}

    Run Keyword If    ${is_path}
    ...     Log To Console   ${key}, ${value}
    
    Run Keyword If    ${type} == dict
    ...     FOR   ${key2}   IN   @{value.keys()}
    ...     ${value2}=    Get From Dictionary    ${value}    ${key2}
    ...     Log To Console   ${key2}, ${value2}
    ...     # 如需支持更深层嵌套,可在此处添加递归判断逻辑
    ...     END
END

兼容旧版本(Robot Framework 3.x)的写法

把内层字典遍历逻辑封装为独立关键字即可:

*** Keywords ***
遍历内层字典
    [Arguments]    ${inner_dict}
    FOR   ${key2}   IN   @{inner_dict.keys()}
        ${value2}=    Get From Dictionary    ${inner_dict}    ${key2}
        Log To Console   ${key2}, ${value2}
    END

*** Test Cases ***
你的测试用例
    # 其他前置逻辑省略
    FOR   ${key}   IN   @{dict.keys()}
        ${value}=    Get From Dictionary    ${dict}    ${key}
        ${type} =    Evaluate    type($value).__name__
        ${is_path}=  Run Keyword If    ${type} == str    Evaluate    "/" in $value    ELSE    Set Variable    ${False}
        Log To Console   ${type}

        Run Keyword If    ${is_path}
        ...     Log To Console   ${key}, ${value}
        
        Run Keyword If    ${type} == dict
        ...     遍历内层字典    ${value}
    END

额外优化建议

如果存在3层及以上的嵌套字典,可以把整个遍历逻辑做成递归关键字,无需重复编写多层循环。

内容的提问来源于stack exchange,提问作者Norman Kuo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 08:24:01