Как вызвать какую-либо другую функцию для каждого выполнения цикла массива json

#arrays #json #karate

#массивы #json #каратэ

Вопрос:

     * def runOperation1 = read('classpath:ic/common/resources/operation/runOperation.feature')
* def operationInputData = read('classpath:ic/feature/streaming/TestData/operationData.json')
* def result = call runOperation1 operationInputData
 * def AllResponse = $result[*].response
 * print AllResponse
  

Здесь ‘AllResponse’ заполняются после завершения всех выполнений из массива json.
Для каждого массива json нам нужно вызвать какую-либо другую функцию и утвердить некоторое значение. Затем нам нужно выполнить поиск другого элемента в массиве json

Комментарии:

1. отредактировал мой пост..

Ответ №1:

Я вижу 2 способа для этого,

1, Добавьте этот дополнительный шаг вызова другой функции и утверждения также в ваш runOperation.feature

2, Вместо того, чтобы call создавать динамическую схему сценария для сценария в runOperation.feature и добавлять свой шаг вызова внутри этого сценария

Редактировать :

Предположим operationData.json , что,

 [
 {"name": "Johan"}, 
 {"name": "Ben"}
]
  

Предположим runOperation.feature , что

 Feature: run operation feature
 Scenario: run operation Scenario
     Given url "http://httpbin.org/get"
     And path name
     And method get
     And status 200
  

Предположим anothercall.feature , что

 Feature: another call feature
 Scenario: another call scenario
     Given url "http://httpbin.org/get"
     And path name
     And method delete
     And status 200
  

Теперь ваша текущая функция может быть,

 Background:
  * def operationInputData = read('classpath:ic/feature/streaming/TestData/operationData.json')

Scenario Outline:
  # steps from runoperation.feature
  Given url "http://httpbin.org/get"
  And path <name>
  And method get
  And status 200
  # calling another feature
  Then def anotherCall = call read("anothercall.feature") {"name": <name>}
  # match / assert condition
 Examples:
 |operationInputData|
  

Я предлагаю использовать второй вариант, поскольку первый может привести к ненужным усложнениям.

Комментарии:

1. Привет, Бабу, <шаги в функции запуска ожидают значения массива json. Но значения массива json не передаются в запрос с использованием схемы сценария.

2. Любая помощь будет оценена. Поскольку нам это нужно для тестирования 5000 запросов в день для внешнего приложения. Когда я печатаю ‘opeationInputData’, он правильно печатает массив json.

3. Какую версию karate вы используете?

4. мой плохой .. тогда вы не можете использовать динамическую схему scneario.. Можете ли вы увеличить до 0.9.1??

5. Привет, Бабу, предложенное тобой решение отлично работает в версии 0.9.1. Спасибо за супер простой ответ. Карате просто потрясающее 🙂 Снимаю шляпу перед Intuit и его разработчиками 🙂