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

如何在大型JSON文件中使用全局变量占位符实现运行时值替换?

实现Robot Framework全局变量批量替换JSON占位符

完全可以不用逐个设置键值对,通过正则批量匹配+全局变量映射的方式实现需求,以下是具体实现方案:

核心思路

读取JSON文件的原始字符串,用正则匹配所有{变量名}格式的占位符,再从Robot Framework的全局变量池中自动匹配对应值完成替换,全程无需手动遍历JSON的每个键值对。

具体实现步骤

1. 编写自定义替换关键字

在Robot Framework文件中定义一个通用关键字,负责完成占位符的批量替换:

*** Keywords ***
批量替换JSON占位符
    [Arguments]    ${原始JSON字符串}
    # 获取所有全局变量
    ${全局变量池}=    Get Variables    global=True
    # 正则匹配{xxx}格式的占位符
    ${匹配规则}=    Set Variable    r'\{(\w+)\}'
    # 替换逻辑:找到占位符对应的全局变量值,找不到则保留原占位符
    ${替换后JSON字符串}=    Evaluate    re.sub(${匹配规则}, lambda m: str(全局变量池.get(f'${{{m.group(1)}}}', m.group(0))), ${原始JSON字符串})    modules=re
    [Return]    ${替换后JSON字符串}

2. 完整使用示例

假设你的资源文件夹中有JSON文件test.json:

{
  "my_key": {variable1},
  "user_name": {global_username},
  "config": {
    "timeout": {global_timeout},
    "switch": {enable_feature}
  }
}

Robot Framework测试用例代码:

*** Settings ***
Library    json

*** Test Cases ***
替换JSON全局变量示例
    # 1. 设置全局变量(也可以从其他文件导入)
    Set Global Variable    ${variable1}    123
    Set Global Variable    ${global_username}    "test_user"
    Set Global Variable    ${global_timeout}    30
    Set Global Variable    ${enable_feature}    true

    # 2. 读取原始JSON文件内容
    ${原始JSON}=    Get File    ${RESOURCES}/test.json

    # 3. 批量替换占位符
    ${替换后JSON}=    批量替换JSON占位符    ${原始JSON}

    # 4. 可选:转为JSON对象用于后续操作
    ${最终JSON对象}=    Evaluate    json.loads(${替换后JSON})    modules=json

    # 打印结果验证
    Log    替换后的JSON字符串:${替换后JSON}
    Log    最终JSON对象:${最终JSON对象}

3. 关键注意事项

  • 若变量是字符串类型,全局变量需要带上引号(如${global_username} "test_user"),确保替换后符合JSON格式要求;
  • 数字、布尔值类型的变量直接设置原值即可,替换后会自动匹配JSON的对应类型;
  • 若占位符对应的全局变量不存在,会保留原占位符,避免JSON格式报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 10:22:10