Есть ли способ добавить вложенное значение json из примеров набросков сценария и правильно отформатировать JSON - PullRequest
1 голос
/ 03 марта 2020

Вот мой сценарий:

  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' |        |          |

Когда я отправляю запрос, я получаю тело в виде:

{"name": "John", "metadata": {"'key1'": "value1"}}

Как мне сделать metadata.key равным "key1"

1 Ответ

0 голосов
/ 03 марта 2020

Это проще, чем вы думаете:

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

* print body

Examples:
  | name | key  | value  |
  | John | key1 | value1 |
  | Jane | key2 | value2 |

Также см .: https://github.com/intuit/karate#scenario -outline-extensionments

РЕДАКТИРОВАТЬ: если у вас действительно очень разные полезные нагрузки в каждой строке я лично рекомендую вам создать отдельную Scenario - по моему мнению, попытка сжать все в один супер-обобщенный c -dynami c Scenario просто приводит к проблемам с читаемостью и удобством сопровождения, см .: { ссылка }

Тем не менее, вы можете сделать это:

Scenario Outline: Test
* print body

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

Существуют «умные» способы удаления некоторых частей JSON, например: https://github.com/intuit/karate#remove -if-null - но вы можете выбрать, какой подход проще.

...