Как зациклить в файле функции в каратэ - PullRequest
0 голосов
/ 25 июня 2018

Привет, я пытаюсь зациклить список карты в файле объектов, ниже мой код

test.feature
Feature:
 Background: 
   * def jsonPathTest = Java.type('com.test.utility.FileUtility').getNames()

 Scenario:
   * def jsonName = karate.get('jsonPathTest[' + __loop + ']')

Ошибка ниже:

java.lang.RuntimeException: javascript evaluation failed: karate.get('jsonPathTest[' + __loop + ']')
    at com.intuit.karate.ScriptBindings.eval(ScriptBindings.java:115)
Caused by: javax.script.ScriptException: ReferenceError: "__loop" is not defined in <eval> at line number 1
    at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:470)
    at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:454)
    at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:406)

Если я вызываю другой файл функции с данными, он работает:

test.feature
Feature:
 Background: 
   * def jsonPathTest = Java.type('com.test.utility.FileUtility').getNames()

 Scenario:
   * call read('test2.feature') jsonPathTest

test2.feature
 Feature:
  Scenario:
     * print __arg

Но я хочу зацикливаться только в файле объектов вместо вызова другого файла объектов и передачи данных. Пожалуйста, предложите мне, как я могу это сделать. Заранее спасибо.

1 Ответ

0 голосов
/ 25 июня 2018

Лично я не понимаю, почему у вас есть нежелание использовать второй файл функции для зацикливания. На самом деле это способствует повторному использованию, и каратэ имеет хорошую поддержку для этого.

Если вы действительно настаиваете, вы должны использовать "родной" способ цикла Cucumber, который называется Scenario Outline. Вот документация: https://github.com/intuit/karate#the-cucumber-way

Обратите внимание, что недостатком является то, что у вас не может быть динамического числа строк. Что, кажется, то, что вы пытаетесь сделать. Если у вас динамическое количество строк и , вы хотите использовать один файл объектов, который не поддерживается в каратэ.

Сравнение двух подходов в коде приведено в следующем примере: https://github.com/intuit/karate/blob/master/karate-demo/src/test/java/demo/search/dynamic-params.feature

...