Мне нужно создать котят, как в этом примере: https://github.com/intuit/karate/blob/master/karate-demo/src/test/java/demo/calltable/call-table.feature. Но мне нужно увеличивать имена вроде name1 and age1, name2 and age2, name3 and age3...
, а не указывать имена и возраст котят в таблице. Как я могу это сделать? Благодарность
Приращение признака (карате)
Ответы (1)
Когда вы call
используете функцию с помощью массива JSON, который вызывает функцию в цикле внутри вызываемой функции, у вас есть доступ к специальной встроенной переменной с именем __loop
.
См. Документацию здесь: Встроенные переменные для call
Таким образом, вы можете делать такие вещи, как { name: "#('Name' + __loop)" }
(править): очевидно, что приведенное выше было слишком запутанным: /, позвольте мне попробовать другое предложение. Посмотрите на этот пример: call-dynamic-json.feature
Вы можете увидеть, как можно на 100% контролировать создание котят в цикле вместо использования table
. Всего наилучшего: P
person
Peter Thomas
schedule
02.11.2017
вау, спасибо за очень быстрый ответ. Извините, но я плохо понимаю: в функции A мне нужно увеличить котят и вызвать функцию B (createOneKitten.feature). В функции А как я могу остановить цикл. Я имею в виду, если я хочу создать 5 котят, как я могу это сказать?
- person cygne; 02.11.2017
отредактировал свой ответ, я думаю, это именно то, что вы искали.
- person Peter Thomas; 02.11.2017
отлично, он работает с call-dynamic-json.feature. Но после в Feature A мне нужно использовать
Kit1
. Как я могу извлечь это из * def kittensFn = """ function(count) { var out = []; for (var i = 0; i < count; i++) { out.push({ name: 'Kit' + i }); } return out; } """
Спасибо
- person cygne; 02.11.2017
посмотрите, он правильно возвращает массив JSON, поэтому просто обращайтесь к нему по индексу
* def first = kittens[0]
- пожалуйста, поговорите с кем-нибудь, кто понимает JS, прежде чем задавать эти вопросы.
- person Peter Thomas; 02.11.2017
Извините, я не заметил
return out
. Работает, большое спасибо
- person cygne; 02.11.2017