模板请求方案大纲空的辅助数组对象导致形成无效的JSON



我正在尝试制定一个模板请求,该请求可以通过场景大纲使用,该大纲将用于测试API,而不需要构建许多有效载荷&维护。

但是,当一个数组包含在包含不同可选块的请求中时,我遇到了一个问题——如果保留为空,则会形成并发送无效的JSON。

如何正确设置数组(当场景大纲中没有值时,排除",{}"?

背景:*def-template_request=read('./request/request.json'(

Scenario Outline: blah
* def request_payload = karate.filterKeys(template_request, <request_filter>)
Given request request_payload
When method post
Examples:
|denominationType1   |amount1|denominationType2 |amount2 |request_filter   |
|NOTE                |10     |                  |        | 'depositDetail' |
|NOTE                |10     |COINS             |20      | 'depositDetail' |

从tbl的第一行发送的请求(对于面额类型2(硬币(具有空值(是:**参见下面仍然设置的第二个数组对象(尽管没有值-这是根据tbl(->设置第二个数组的逗号和大括号{}导致问题

{
"depositDetail": {
"denomination": [
{ 
"amount": "10",
"denominationType": "NOTE"
},
{
}
]

}

第二行的请求很好

{
"depositDetail": {
"denomination": [
{ 
"amount": "10",
"denominationType": "NOTE"
},
{
"amount": "20",
"denominationType": "COINS"
}
]

}

requestTemplate.json

{
"depositDetail": {
"denomination": [
{
"denominationType": ##(denominationType1),
"count": ##(count),
"amount": ##(amount1)
},
{
"denominationType": ##(denominationType2),
"amount": ##(amount2)
}
]

}}

我在过滤器或功能方面没有运气-你能帮我吗?

您还没有提供模板。不管怎样,我就是这么做的。你可以试试,看看效果如何。

Scenario Outline:
* def payload = { denomination: [] }
* if (type1) payload.denomination.push({ type: type1, amount: amount1 })
* if (type2) payload.denomination.push({ type: type2, amount: amount2 })
* url 'https://httpbin.org/anything'
* request payload
* method post
Examples:
| type1  | amount1 | type2 | amount2 |
| NOTE   | 10      |       |         |
| NOTE   | 10      | COIN  | 20      |

但在我看来,即使是上述内容也并不优雅。我建议你不要把测试过于复杂,只做这样的事情:

Scenario Outline:
* def payload = {}
* payload[key] = items
* url 'https://httpbin.org/anything'
* request payload
* method post
Examples:
| key  | items!                                                       |
| foo  | [{ type: 'NOTE', amount: 10 }]                               |
| bar  | [{ type: 'NOTE', amount: 10 }, { type: 'COIN', amount: 20 }] |

最新更新