Отправить второй запрос nb раз как nb предметов, возвращенных для первого запроса с использованием каратэ - PullRequest
1 голос
/ 26 марта 2020

Мне нужно отправить 2 запроса в наброске сценария. Пример:

Background:
* url 'someurl'

  Scenario Outline:
  * path <owner_id>, 'cats'
  * method get
  * status 200
  here I need to get ids of cats from response as {"cats": [{"cat_id": "xx"}, {"cat_id": "yy"}...]}

  * path <owner_id>, <cat_id>, 'kittens'
  * method get
  * status 200
  Examples:
  |owner_id|
  |bill_id |
  |kate_id | and so on

Можно ли отправить второй запрос (получение котят) для каждого cat_id из первого запроса и это для каждого owner_id?

Я пробовал другой способ:

Background:
* url 'someurl'

  Scenario Outline:
  * def cats = call read('GetCats.feature')
 then store cat_ids as here:
  * def catsIds = cats.c[*].id (I get an error "javascript evaluation failed: cats.c[*]id, <eval>:1:6 Expected an operand but found *") 
  OR
  * def catsIds = karate.mapWithKey(cats.c[*].id, 'cat_id')

  * path <owner_id>, <cat_id>, 'kittens'
  * method get
  * status 200
  Examples:
  |owner_id|
  |bill_id |
  |kate_id | ...

А вот и GetCats.feature

 Scenario:
 * url 'someurl'
 * path 'cats'
 * method get
 * status 200
 * def c = response

Я думал о karate.repeat, но можем ли мы использовать его для этого случая?

1 Ответ

1 голос
/ 26 марта 2020

Все возможно, вы можете вызывать другие функции, все данные находятся в области действия и т. Д. c.

Вы допустили ошибку здесь, обратите внимание на $:

* def catsIds = $cats.c[*].id

См .: https://github.com/intuit/karate#get

...