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

如何在Karate的Scenario Outline中通过CSV设置请求JSON的值

Karate Scenario Outline 从CSV取值更新JSON字段的正确实现

你当前的代码问题在于set命令中错误使用了#(Test1)语法,导致变量未被正确替换,而是直接作为字符串赋值。以下是两种可行的修正方案:

方案1:直接引用变量赋值

在Scenario Outline中,Examples的变量可以直接在步骤中使用,无需#()包裹:

Scenario Outline: test1
* def requestSamp = read('API.json')
* set requestSamp.Test1 = Test1
# 或者更简化的写法,效果完全一致:
# * requestSamp.Test1 = Test1
Examples:
| read('test1.csv') |

方案2:读取JSON时动态替换

利用Karate读取JSON时的动态表达式特性,直接在read时替换字段:

Scenario Outline: test1
* def requestSamp = read('API.json') { Test1: '#(Test1)' }
Examples:
| read('test1.csv') |

原理说明

  • #()语法是Karate在读取JSON/XML文件时的动态替换语法,而在set命令或直接变量赋值时,直接使用变量名即可触发Scenario Outline的迭代变量替换。
  • 修正后,每次迭代会自动从CSV的对应行取出Test1值,覆盖API.json中的默认值,生成你预期的三个请求JSON结构:
    {
      "Test1": "1",
      "Test2": "IL",
      "Test3": "1"
    }
    
    {
      "Test1": "4",
      "Test2": "IL",
      "Test3": "1"
    }
    
    {
      "Test1": "7",
      "Test2": "IL",
      "Test3": "1"
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 06:13:26