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

如何基于JSON文件条件自动执行对应Robot Framework脚本

Robot Framework下按JSON文件数量触发对应脚本的实现方案

你可以选以下两种可直接落地的方案,不需要额外安装第三方依赖:

方案1:纯Robot脚本调度(符合框架原生使用习惯)

直接编写一个入口调度Robot文件作为统一执行入口,核心逻辑是先等待Python脚本生成的JSON文件写入稳定,再统计数量做条件分支:

*** Settings ***
Library    OperatingSystem

*** Variables ***
# 替换为实际存放生成JSON文件的文件夹路径
${JSON_SAVE_DIR}    ./output_json
${MAX_WAIT_TIME}    30s
${CHECK_INTERVAL}    2s

*** Test Cases ***
Auto Trigger Corresponding Test Suite
    # 如果需要调度器自动触发JSON生成的Python脚本,取消下一行注释替换成实际脚本路径
    # Run    python your_json_generate_script.py
    Wait Until Keyword Succeeds    ${MAX_WAIT_TIME}    ${CHECK_INTERVAL}    Verify JSON Write Finish
    ${json_num}    Count JSON Files In Dir
    IF    $json_num == 1
        Run    robot --loglevel TRACE Timeautomation.robot
    ELSE IF    $json_num == 2
        Run    robot --loglevel TRACE Timeautomation1.robot
    ELSE
        Fail    当前检测到${json_num}个JSON文件,不符合预期的1/2个,执行终止
    END

*** Keywords ***
Count JSON Files In Dir
    ${all_files}    List Files In Directory    ${JSON_SAVE_DIR}
    ${json_files}    Get Matching Items    ${all_files}    *.json
    [Return]    ${len(json_files)}

Verify JSON Write Finish
    ${first_count}    Count JSON Files In Dir
    Sleep    1s
    ${second_count}    Count JSON Files In Dir
    IF    $first_count != $second_count
        Fail    JSON文件仍在生成中,继续等待
    END

使用注意事项:

  • 等待文件写入稳定的逻辑是为了避免Python脚本还没写完文件就开始统计,导致数量判断错误,可根据自己脚本生成文件的实际速度调整超时和间隔参数
  • 如果Python脚本需要调度器自动触发,删掉脚本里对应Run命令的注释替换成实际脚本路径即可,不需要额外手动执行Python脚本

方案2:Python轻量调度(适合后续扩展复杂逻辑)

如果后续需要加文件内容校验、多分支判断等更复杂的逻辑,可以直接写一个极简Python脚本作为执行入口,逻辑更直观:

import os
import time
import glob
import subprocess

JSON_DIR = "./output_json"
# 执行生成JSON的Python脚本,替换为实际脚本路径
subprocess.run(["python", "your_json_generate_script.py"], check=True)

# 等待文件写入完成
last_count = -1
while True:
    current_count = len(glob.glob(os.path.join(JSON_DIR, "*.json")))
    if current_count == last_count and current_count in (1, 2):
        break
    last_count = current_count
    time.sleep(1)

# 执行对应Robot命令
run_cmd = ["robot", "--loglevel", "TRACE", "Timeautomation.robot"] if current_count == 1 \
    else ["robot", "--loglevel", "TRACE", "Timeautomation1.robot"]
subprocess.run(run_cmd, check=True)

这个方案的优势是逻辑修改更灵活,不需要记忆Robot内置关键字的用法,适合有Python基础的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 03:03:39