空手道 - 任何非丑陋的方式来发送 API 请求,每个请求正文字段的请求格式错误?

Karate- Any non-ugly way to send API requests with malformed requests for each request body field?

我有一个奇怪的问题,我已经找到了解决方案,但它非常难看。我想知道是否有更好的方法通过空手道或 JS 来完成。我是新手所以请多多包涵。

我正在发送一个 POST 调用,请求正文相当大(总共 19 个字段)。我必须有目的地向 EACH 字段发送格式错误的请求,而不是为键输入合法值,我输入垃圾值(或完全删除该值)并确保我按预期获得 400。

例如请求正文如下(为便于说明而缩短):

{
    "Age": 20
    "School": "UIC"
    "Sex": "Female"
}

我正在发送这样的请求:

* def payload = {"Age":'#(age)',"School":'#(schoolName)', "Sex":'#(gender)'}
* copy payload1 = payload
* copy payload2 = payload
* copy payload3 = payload
* remove payload1.Age
* remove payload2.School
* remove payload3.Sex
* table callTable
    |payload  |status|
    |payload1 | 400  |
    |payload2 | 400  |
    |payload3 | 400  |
* call read (call to the actual POST API here)

从表面上看,上面的内容可能看起来并不难看,但想象一下对 19 个字段执行此操作而不是删除,每个字段大约有 5 个不同的请求(而不是上面只有一个“删除”)。

我考虑过使用 JS 和循环函数,但我的知识还不够,我的尝试以惊人的失败告终。

请告知是否有更好的空手道方法and/or JS。

提前感谢您的阅读和抽出时间!

您可以使用循环来构建 JSON。例如:

* def keys = ['foo', 'bar', 'baz']
* def body = {}
* keys.forEach(k => body[k] = 'blah')
* match body == { foo: 'blah', bar: 'blah', baz: 'blah' }

另见

JSON 转换的主要文档:https://github.com/intuit/karate#json-transforms