Karate 有没有办法从场景大纲示例中添加嵌套的json值,并使其正确格式化json

Karate 有没有办法从场景大纲示例中添加嵌套的json值,并使其正确格式化json,karate,Karate,这是我的剧本: Scenario Outline: Test * def body = {} * set body | path | value | | name | <name> | | metadata.<key> | <value> | Given url 'http://localhost/' * request body When method post Examples: | n

这是我的剧本:

  Scenario Outline: Test
* def body = {}
* set body
  | path           | value   |
  | name           | <name>  |
  | metadata.<key> | <value> |

Given url 'http://localhost/'
* request body
When method post

Examples:
  | name   | key    | value    |
  | 'John' | 'key1' | 'value1' |
  | 'Jane' |        |          |

如何将metadata.key设置为“key1”?

这比您想象的要简单:

Scenario Outline: Test
* def body = { name: '#(name)' }
* body[key] = value

* print body

Examples:
  | name | key  | value  |
  | John | key1 | value1 |
  | Jane | key2 | value2 |
另请参阅:

编辑:如果您的每一行中的有效载荷都大不相同,我个人建议您创建一个单独的
场景
——在我看来,试图将所有内容压缩到一个超级通用的动态
场景
只会导致可读性和可维护性问题,请参阅:

也就是说,您可以这样做:

Scenario Outline: Test
* print body

Examples:
  | body!                                                |
  | { "name": "John", "metadata": { "key1": "value1" } } |
  | { "name": "Jane" }                                   |

有一些“聪明”的方法可以删除JSON的某些部分,如:-但您可以选择哪种方法更简单。

它比您想象的更简单:

Scenario Outline: Test
* def body = { name: '#(name)' }
* body[key] = value

* print body

Examples:
  | name | key  | value  |
  | John | key1 | value1 |
  | Jane | key2 | value2 |
另请参阅:

编辑:如果您的每一行中的有效载荷都大不相同,我个人建议您创建一个单独的
场景
——在我看来,试图将所有内容压缩到一个超级通用的动态
场景
只会导致可读性和可维护性问题,请参阅:

也就是说,您可以这样做:

Scenario Outline: Test
* print body

Examples:
  | body!                                                |
  | { "name": "John", "metadata": { "key1": "value1" } } |
  | { "name": "Jane" }                                   |

有一些“聪明”的方法可以删除JSON的某些部分,比如:-但是你可以选择哪种方法更简单。

好的-我已经修复了我的表,以更好地反映我想要做的事情:第一个记录帖子正文应该是:
{“name”:“John”,“metadata”:{“key1”:“value1”}
而第二个记录帖子正文应该是:
{“name”:“Jane”}
我正在处理的实际JSON对象大约有8个不同的字段,其中只有3个字段是必需的。如果我使用的主体结构似乎适合我需要做的事情。稍微玩玩一下,我可以通过以下
场景大纲来解决这个问题:Test2*def body={}*设置正文|路径|值| | | | | |名称| | |元数据| |*打印正文示例:|名称|值| |'John'|{“key1”:“value1”}| |“Jane”|
如前所述,我有8个字段,其中只有三个是必填字段,而此元数据字段是唯一一个给我带来任何问题的字段。这也是为什么我希望将所有字段都放在一起。@BigKev没有“问题”。不确定您是否理解我的建议,我建议您将此答案标记为“已接受”并用您已经知道的具体示例打开一个新问题-我已经修复了我的表,以更好地反映我想要做的事情:第一个记录帖子正文应该是:
{“name”:“John”,“metadata”:{“key1”:“value1”}
,而第二个记录帖子正文应该是:
{“name”:“Jane”}
我正在处理的实际JSON对象大约有8个不同的字段,其中只有3个是必需的。如果我使用的主体结构似乎符合我需要做的事情。稍微玩玩一下,我可以用这个
场景大纲来解决这个问题:Test2*def body={}*设置正文|路径|值| | | | | |名称| | |元数据| |*打印正文示例:|名称|值| |'John'|{“key1”:“value1”}| |“Jane”|
如前所述,我有8个字段,其中只有三个是必填字段,而此元数据字段是唯一一个给我带来任何问题的字段。这也是为什么我希望将所有字段都放在一起。@BigKev没有“问题”。不确定您是否理解我的建议,我建议您将此答案标记为“已接受”用你的具体例子提出一个新问题