Цикл по массиву объектов для функции - PullRequest
1 голос
/ 11 октября 2019

Мой сценарий очень распространен: я создаю определенные объекты, используя метод POST. В конце функции я хочу удалить все объекты, которые я извлек из операции GET

Feature:

Scenario: create cat
Given url demoBaseUrl
And path 'cats'
And request { name: '#(name)' } ## using table created many cats
When method post
Then status 200

Scenario: get all the cats
Given url demoBaseUrl
When method get
Then status 200
* def createdcats = $.cats[*].id

## this gives lets say 4 values Cat1,Cat2,Cat3,Cat4

##Now I want to use the DELETE method to delete the said cats, the DELETE operation takes a path param

Given url demoBaseUrl
And path 'cats'
When method delete
Then status 204

, какой параметр нужно передать для циклического перебора массива createdcats

У меня была идея иметь функцию JS, но тогда это будет означать вызов функции с помощью js. Это правильный способ сделать это?

1 Ответ

1 голос
/ 11 октября 2019

Вы можете создать повторно используемую функцию удаления и повторять ее с несколькими наборами данных по своему желанию.

создать новую функцию, как показано ниже,

deleteCats.feature

Feature: delete cat feature
 Scenario: delete cat
  Given url demoBaseUrl 
  And path catId
  When method delete 
  Then status 204

Измените основную функцию, чтобы вызвать вышеуказанную функцию, и запустите

Main.feature

Feature: cat feature
 Scenario: create cat 
  Given url demoBaseUrl 
  And path 'cats' 
  And request { name: '#(name)' } ## using table created many cats 
  When method post 
  Then status 200 
 Scenario: get all the cats 
  Given url demoBaseUrl 
  When method get 
  Then status 200 
  * def createdcats = $.cats[*].id
  * def createdcats = karate.mapWithKey(createdcats, 'catId')
  * def delCats = call read('deleteCats.feature') createdcats

Теперь последние 2 строки вПриведенный выше код создаст данные для итерации и итерирует данную функцию для n количества раз.

...