Как прочитать данные Dynami c в полезной нагрузке запроса из файла json? - PullRequest
0 голосов
/ 28 апреля 2020

Ниже приведен пример файла JSON, названный multiple.json, и я дал пример структуры моего файла json.

{
    "sample_key":[{"name":"John","salary":"10000","age":"25"}],
    "another_key":[{"author":"Scott","publication":"Pearson","year":"2019"}]
}

У меня есть один файл объектов, который имеет два Scenario Outline. Этот файл читает объект JSON из файла multiple.json, который содержит другой объект JSON, разделенный парой ключ-значение. И я хочу передать данные в request payload, то есть sample_key и another_key в следующем файле возможностей.

Мой Sample.feature файл:

Background:
    * def kittens = read('../json/multiple.json')

Scenario Outline: Create Sample Name Record
Given url url
And request { sample_key:'<sample_key>'}        // Here, I have question..
When method POST
Then status 200
* def output = response
* print output

Examples:
|kittens|

Scenario Outline: Create Sample Author Record
Given url url
And request { another_key:'<another_key>'}      // Here, I have question..
When method POST
Then status 200
* def output = response
* print output

Examples:
|kittens|

Однако, это работает только с ниже JSON с scenario. (Здесь я не добавил JSON object in array)

{ "sample_key":{"name":"John","salary":"10000","age":"25"}, "another_key":{"author":"Scott","publication":"Pearson","year":"2019"} }

Но это не работает, когда я даю JSON object in array (как упоминалось в верхней части вопроса)

Я хочу передать несколько записей в одну sample_key, которую я хочу запустить в одной scenario.

Итак, как могу я передать sample_key in Scenario Outline: Create Sample Name Record?

Пожалуйста, предложите мне. Спасибо !!

1 Ответ

0 голосов
/ 29 апреля 2020

РЕДАКТИРОВАТЬ: возможно, это ответ, который вы ищете:

Examples:
| kittens.sample_key |

Возможно, вам не нужно Scenario Outline тогда. Вы можете получить доступ к JSON по индексу и просто использовать 2 Scenario -s

* def sample_key = kittens.sample_key[0]

Также обратите внимание, что если вы используете динамику c Scenario Outline, вы получаете автомат c __num переменная: https://github.com/intuit/karate#scenario-Outline-Enhanced

Таким образом, вы можете сделать это, если котята являются массивом JSON:

* def payload = kittens[__num]
...