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

无需.robot/.txt脚本运行Robot Framework及JSON生成用例咨询

直接通过代码/JSON运行Robot Framework的实现方案

完全不需要强制生成.robot/.txt格式的脚本文件,Robot Framework原生提供Python API支持全内存动态组装测试逻辑并执行,天然支持步骤间依赖前置步骤输出的场景,适配你当前用JSON存储测试序列的需求。

核心实现逻辑

Robot Framework的执行内核本身不依赖磁盘上的.robot格式文件,所有脚本解析完成后最终都会转化为内存中的测试套件、测试用例、关键字调用结构,你可以跳过文件解析步骤,直接通过API组装这些结构后执行:

  • 自定义步骤适配:你JSON中step_type对应的公共函数库可以直接导入测试套件,不需要额外封装Robot格式的关键字,函数执行的返回值会自动纳入测试上下文,后续步骤可以直接通过变量名引用,不需要自己维护步骤间的传值逻辑。
  • 流程控制适配:你JSON中定义的if/else、for、while等分支、循环逻辑,可以直接映射为Robot内置的对应流程控制关键字,不需要从零实现流程执行引擎。
  • 执行输出无差异:内存组装的套件执行后,生成的日志、测试报告和通过.robot文件执行的结果完全一致,支持所有Robot原生的断言、标签、监听器等特性。

最小实现示例

以下是不依赖任何.robot文件,直接在代码中组装测试并执行的示例,你可以基于这个逻辑对接自己的JSON结构:

from robot.api import TestSuite, ResultWriter

# 初始化内存中的测试套件,无任何磁盘.robot文件依赖
suite = TestSuite(name="JSON序列驱动测试套件")
# 导入你自己的步骤函数库,对应JSON中各个step_type的实现
suite.resource.imports.library("your_custom_step_lib.py")

# 以下逻辑可替换为读取你的JSON结构,动态组装测试用例
test_case = suite.tests.create(name="seq_id_1 测试用例")
# 组装普通顺序步骤,对应sequence_data中的节点
test_case.keywords.create(name="step_1", args=["param_a_val", "param_b_val"])
# 组装IF分支逻辑,对应flag_type=if的配置
if_block = test_case.keywords.create(name="IF", args=["${mid_val} > ${comparison_left_var}"])
if_block.keywords.create(name="分支满足时执行的步骤", args=[])
else_block = if_block.keywords.create(name="ELSE")
else_block.keywords.create(name="分支不满足时执行的步骤", args=[])
# 组装FOR循环逻辑,对应flag_type=for的配置
for_block = test_case.keywords.create(name="FOR", args=["${idx}", "IN RANGE", "${loop_length}"])
for_block.keywords.create(name="循环内执行的步骤", args=["${idx}"])

# 直接执行测试套件
run_result = suite.run(output="test_output.xml")
# 生成可视化测试报告
ResultWriter("test_output.xml").write_results(report="test_report.html", log="test_log.html")

适配你的JSON结构的注意事项

  • 不需要调整现有JSON的存储结构,只需要写一层递归遍历的转换逻辑:遇到普通sequence_data节点就生成对应普通关键字调用,遇到flag_data节点就根据flag_type生成对应的流程控制块,嵌套的步骤递归处理即可。
  • 步骤间的变量传递不需要额外开发:你只需要在转换步骤时,把步骤的返回值赋值给指定变量名,后续步骤引用对应变量名即可拿到前置步骤的输出,比pytest/unittest通过fixture或者全局变量传值的方式更适配线性测试序列的场景。
  • 如果你后续需要扩展重试、异常捕获等逻辑,直接映射Robot对应的内置关键字即可,不需要修改核心执行逻辑。

你当前存储测试序列的JSON结构参考:

{
"seq_id": 1,
"seq_type": 1,
"seq_len": 1,
"flag_data": {
    "flag_name": "",
    "flag_type": "",
    "flag_length": 1,
    "mid_val": 1,
    "comparison_left_type": '>',
    "comparison_left_var": 1,
    "comparison_right_type": '<',
    "comparison_right_var": 1,
    "loop_length": 1
},
"sequence_data": [{
    "step_name": 'step_1',
    "step_type": '',
    "step_variable_a": a,
    "step_variable_b": b
}]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:01:29