Karate框架Scenario Outline执行时URL重置及callonce缓存异常问题
问题场景
给定如下用于设置URL的JS文件:
function fn() { var root = 'https://google.com'; karate.log('root value is: ', root); additionalconfig = { root: root } return additionalconfig; }
以及如下Feature文件:
Feature: Background: * callonce read('seturl.js') * url root # * url 'https://www.google.com' Scenario Outline: # Given url root Given path 'search' And params {q: <option>} When method GET Then status 200 Examples: | option | | karate | | api | | test | | graphql |
问题现象
执行时首次用例正常,但后续用例中URL被重置,返回错误:
01: root <<<< org.graalvm.polyglot.PolyglotException: ReferenceError: "root" is not defined - <js>.:program(Unnamed:1)
根据Karate文档说明,HTTP请求后path会重置但url不会;callonce会缓存执行结果仅运行一次。但实际测试发现:
- 若在Background中通过变量设置url,仅首次调用有效;硬编码url则所有用例正常
- 将callonce改为call后,所有用例正常运行
疑问
对照文档存在两个疑问:
- 通过变量设置的URL值为何会被重置?
- callonce功能是否未正确缓存执行结果?
内容的提问来源于stack exchange,提问作者mike
相关产品推荐
相关产品推荐

