当前位置: 首页 > 知识库问答 >
问题:

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

邬阳
2023-03-14

我想使用KARATE框架的数据驱动特性动态地为JSON中的一些元素(从文件中读取)设置值。以下是更多的细节:

request.json -> { wheels : <wheel>, color: '<color>' }

特性:从文件中读取json输入并迭代数据表值

背景:

* url ''
* def reqJson = read('request.json') 
* print reqJson
# 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 | 

附注:我尝试使用表方法调用其他特性文件。然而,我希望每个API保留一个特性文件,因此我想知道是否有任何可能的方式来实现上述方法

共有1个答案

壤驷文华
2023-03-14

我认为您错过了在许多情况下比set关键字更简单的嵌入式表达式,尤其是从文件读取时。

例如:

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)' }
 类似资料:
  • 我必须读取另一个ftl文件中包含属性值的json文件。我试着通过指定为 然后尝试使用值中的属性,但它将值分配为字符串值,而不是从分配的路径中读取值。我应该怎么做才能从property.json文件中读取值?

  • 我正在尝试在网络上使用spring-batch在不同的endpoint(pc,s3,dropbox,google drive)之间传输任何文件(视频,txt等)。为此,我将获得包含要传输的文件位置(url)列表的json文件(假设我可以访问这些位置)。 那么,当我的控制器被击中(在其中创建作业)而不是在启动spring-boot应用程序的时候,我如何告诉阅读器读取输入呢? 我已经尝试添加“spri

  • 到目前为止,我的方法是: 挑战是:不能使用。如何正确使用?

  • 问题内容: 我有以下json文件。我想知道我应该将json文件放在我的项目中的位置以及如何读取和存储它。 问题答案: 将该文件放入资产中 。 对于在Android Studio项目中创建的项目,您需要在主文件夹下创建资产文件夹。 将该文件读取为: 然后您可以简单地通过此函数读取此返回 有关JSON的更多详细信息,请参见 http://www.vogella.com/articles/Android

  • 问题内容: 文件名根据月份而变化。每个月都有一个新文件。 如何设置将与可变文件路径一起使用的连接管理器? 问题答案: 您需要为 或 属性设置表达式,以 使用SSIS包变量动态修改Excel连接管理器。

  • 如何在空手道配置中设置值。功能中的js?我在我的一个功能中创建了一只猫,我想把这个id放到空手道配置中。名为catId的值中的js