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没有“问题”。不确定您是否理解我的建议,我建议您将此答案标记为“已接受”用你的具体例子提出一个新问题