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

Robot Framework如何拼接字符串生成适配SquashTM的动态变量名

Robot Framework 动态变量名适配SquashTM方案

报错原因

原代码使用的${nameItem${j}}属于嵌套变量写法,SquashTM内置的Robot Framework解析器对变量名做了强校验,不识别嵌套拼接的变量结构,判定变量名包含非法字符才抛出格式错误。

实现思路

完全基于RF内置原生关键字实现,无需安装第三方工具:

  • 放弃直接在变量占位符内写嵌套逻辑
  • 先将固定前缀和列表元素拼接为纯合法字符的变量名(仅含字母/数字,符合平台规则)
  • 借助Set Suite Variable、Get Suite Variable的动态入参特性完成变量的赋值和读取,保留动态生成、复用变量的能力

重构后可直接运行的代码

@{someList}=    Create List    A    B    C    D    E
FOR    ${j}    IN    @{someList}
        FOR    ${i}    IN RANGE    999999
            ${randomString}=    Generate Random String    4    0123456789
            # 拼接合法变量名,无任何特殊字符
            ${currentNameVar}=    Set Variable    nameItem${j}
            ${currentRefVar}=    Set Variable    refItem${j}
            # 动态赋值套件变量
            Set Suite Variable    \${${currentNameVar}}    ${randomString}
            Set Suite Variable    \${${currentRefVar}}    ${randomString}/${date}
            # 动态读取变量值用于接口请求,避免嵌套变量写法
            ${currentRefVal}=    Get Suite Variable    \${${currentRefVar}}
            ${myItem}=    GET    ${urlAPI}${urlItem}/${currentRefVal}
            ${condition}=    Run Keyword And Continue On Failure
            ...    The randomString number does not exist
            IF    "${condition}"=="True"    BREAK
        END
    END

后续变量复用方法

两种方式都可以正常取到生成的变量:

  • 固定取值:直接使用拼接完成的合法变量名即可,比如取列表元素A对应的名称变量,直接写${nameItemA}
  • 动态取值:和赋值逻辑一致,先拼接目标变量名,再通过Get Suite Variable读取即可,示例:
# 动态取j对应的值
${targetVarName}=    Set Variable    refItem${j}
${targetVal}=    Get Suite Variable    \${${targetVarName}}

写法说明

  • 代码中\$是RF原生支持的转义写法,作用是延迟变量解析,先将拼接完成的合法变量名字符串传入关键字,再由内置关键字完成变量创建/读取,不属于特殊语法
  • 最终生成的所有变量名均为nameItemA、refItemB这类纯字母组合,完全符合SquashTM的参数名规则,不会触发格式报错
  • 所有逻辑均基于RF内置关键字实现,不需要安装任何第三方库或工具,符合公司政策限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:24:23