Как динамически установить значение в JSON читать из файла в каратэ - PullRequest
0 голосов
/ 29 апреля 2018

Я хочу динамически установить значение для некоторых элементов в JSON (чтение из файла), используя управляемую данными функцию каркаса KARATE. Вот более подробная информация:

request.json -> { wheels : <wheel>, color: '<color>' }

Добавление: чтение входных данных json из файла и перебор значений таблицы данных

Справочная информации:

* url ''
* def reqJson = read('request.json') 
* print reqJson

Сценарий: чтение файла теста

# I want to avoid writing below set statements for each element in request
#* set reqJson.wheels = <wheel>
#* set reqJson.color = '<color>'

Given path ''
And request reqJson
When method POST
Then status 200
And match response contains {mode: '<result>'}

Examples:

| wheel | color | result  |
| 4     | red   | car     |
| 2     | any   | bicycle | 

Я занимаюсь разработкой инфраструктуры автоматизации с использованием каратэ, я собираюсь сохранить пример запроса в файле JSON для данного API, а затем во время выполнения я хочу заменить значения элементов на значения, приведенные в таблице выше. Я не хочу написать оператор set для каждого элемента (закомментированные строки выше)

P.S .: Я пытался вызвать другой файл с использованием табличного подхода. Тем не менее, я хочу сохранить один файл функций для API, поэтому хочу знать, есть ли какой-либо способ для вышеупомянутого подхода

1 Ответ

0 голосов
/ 30 апреля 2018

Я думаю, что вы пропустили встроенные выражения , что во многих случаях проще, чем ключевое слово set, особенно при чтении из файлов.

Например:

request.json -> { wheels : '#(wheels)', color: '#(color)' }

И тогда это будет работать:

* def wheels = 4
* def color = 'blue'
* def reqJson = read('request.json')
* match reqJson == { wheels: 4, color: 'blue' }

Если вы ознакомитесь с демонстрационными примерами 1015 *, у вас будет множество других идей. Например:

* table rows
| wheels | color  | result |
|      4 | 'blue' | 'car'  |
|      2 | 'red'  | 'bike' |

* call read('make-request.feature') rows

А где make-request.feature:

Given path ''
And request { wheels: '#(wheels)', color: '#(color)' }
When method POST
Then status 200
And match response contains { mode: '#(result)' }
...