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

时间:2019-03-28 14:14:53

标签: karate

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

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文件中,我如何遍历传递的有效负载,以便将单个有效负载传递到发布请求。

1 个答案:

答案 0 :(得分:1)

您缺少的简单规则是,如果call的参数是JSON对象的JSON数组,它将自动进行迭代。

请仔细阅读文档:https://github.com/intuit/karate#data-driven-features

因此进行更改:

* def result = call read('createrecord.feature') payload

baseURL中将提供createrecord.feature,因此您不必担心会通过它。

请注意,这可能不起作用:* set payload[*].bookingdates请参考以下答案:https://stackoverflow.com/a/54928848/143475