Karate 如何在从空手道文件读取的json中动态设置值

Karate 如何在从空手道文件读取的json中动态设置值,karate,Karate,我想使用KARATE框架的数据驱动特性动态设置JSON(从文件读取)中某些元素的值。详情如下: request.json -> { wheels : <wheel>, color: '<color>' } 场景大纲:测试文件读取 # I want to avoid writing below set statements for each element in request #* set reqJson.wheels = <wheel> #* set

我想使用KARATE框架的数据驱动特性动态设置JSON(从文件读取)中某些元素的值。详情如下:

request.json -> { wheels : <wheel>, color: '<color>' }
场景大纲:测试文件读取

# I want to avoid writing below set statements for each element in request
#* set reqJson.wheels = <wheel>
#* set reqJson.color = '<color>'

Given path ''
And request reqJson
When method POST
Then status 200
And match response contains {mode: '<result>'}

Examples:

| wheel | color | result  |
| 4     | red   | car     |
| 2     | any   | bicycle | 
#我希望避免为请求中的每个元素编写下面的set语句
#*set reqJson.wheels=
#*设置reqJson.color=''
给定路径“”
并请求reqJson
当方法发布时
然后状态200
和匹配响应包含{模式:'}
示例:
|车轮|颜色|结果|
|4 |红色|轿车|
|2 |任何|自行车|
我正在使用空手道开发自动化框架,我的目的是将给定API的示例请求保存在JSON文件中,然后在执行过程中,我希望元素值替换为上表中给出的值。我也不想为每个元素编写set语句(上面的注释行)

注意:我尝试使用表方法调用其他功能文件。但是,我想为每个API保留一个功能文件,因此我想知道是否有任何可能实现上述方法的方法

我认为在许多情况下,特别是在从文件读取时,您错过了比
set
关键字更简单的方法

例如:

* table rows
| wheels | color  | result |
|      4 | 'blue' | 'car'  |
|      2 | 'red'  | 'bike' |

* call read('make-request.feature') rows
request.json->{wheels:'#(wheels)',color:'#(color)}

这样就行了:

* def wheels = 4
* def color = 'blue'
* def reqJson = read('request.json')
* match reqJson == { wheels: 4, color: 'blue' }
如果你通过考试,你会得到很多其他的想法。例如:

* table rows
| wheels | color  | result |
|      4 | 'blue' | 'car'  |
|      2 | 'red'  | 'bike' |

* call read('make-request.feature') rows
其中,
发出请求。功能是:

Given path ''
And request { wheels: '#(wheels)', color: '#(color)' }
When method POST
Then status 200
And match response contains { mode: '#(result)' }

谢谢你的帮助,彼得,两种方法都非常有效。空手道框架丰富而酷的特性给人留下了深刻的印象!嗨,Peter,我确实投票了,但是我看到了这样一条消息:“感谢您的反馈!记录了声誉低于15的人的投票,但不要更改公开显示的帖子分数。”