嗨,我想在一个功能文件中循环一个Map列表,下面是我的代码
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 回答
我个人不明白为什么你不愿意使用第二个功能文件循环 . 实际上它促进了重复使用,空手道对此有很好的支持 .
如果你真的坚持,你必须使用Cucumber "native"循环方式,称为
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