Karate 如何反序列化传递给接受多个参数的其他功能文件的json负载

Karate 如何反序列化传递给接受多个参数的其他功能文件的json负载,karate,Karate,我正在向.feature文件发送多个参数,其中一个参数是使用空手道表生成的请求json负载。如何迭代请求有效负载,以便post请求一次获得一个有效负载 Scenario: post booking * table payload | firstname | lastname | totalprice | depositpaid | | 'foo' | 'IN' | 10 | true | | 'bar' | 'out' | 20 | t

我正在向.feature文件发送多个参数,其中一个参数是使用空手道表生成的请求json负载。如何迭代请求有效负载,以便post请求一次获得一个有效负载

Scenario: post booking

* table payload
| firstname | lastname | totalprice | depositpaid | 
| 'foo'    | 'IN'      | 10     | true      |
| 'bar'    | 'out'     | 20     | true          | 

#date will calculate using js function in background and baseURL is configured in karate.config.js file

* set payload[*].bookingdates = { checkin: '#(date())', checkout: '#(date())' }
* def result = call read('createrecord.feature') {PayLoad: #(payload) , URL: #(baseURL)}

######################################
createrecord.feature file will have 

@ignore
Feature: To create data

Background: 
* header Accept = 'application/json'

Scenario: 
Given url __arg.URL
And path 'booking'
And request __arg.PayLoad
When method post
Then status 200

在createrecord.feature文件中,我如何迭代传递的有效负载,以便将单个有效负载传递给post请求。

您缺少的简单规则是,如果调用的参数是JSON数组(JSON对象),它将自动迭代

请仔细阅读文件:

因此,做出以下改变:

* def result = call read('createrecord.feature') payload
baseURL
将在
createrecord.feature
中提供,因此您无需担心传递它


请注意,这可能不起作用:
*设置有效负载[*]。预订日期
请参考此答案:

谢谢您的回复。你的建议很管用。只是想知道是否需要将多个JSON有效负载传递给另一个功能文件。用户必须如何处理它。或者空手道不建议采用这种方法。正如上面的示例中所示,由于post失败,PayLoad正在传递整个JSON对象。另外,
*设置有效负载[*]。bookingdates
对我有效。然而,正如上述链接中提供的答案所述,依靠这一点可能是不可行的。所以我使用了“set”而不是“table”。@ShekharPatil作用域中的任何变量都会自动对调用的功能可用。但如果需要,请提出一个新问题(用一个明确的例子)