如何在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
相关产品推荐
相关产品推荐

