You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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后,所有用例正常运行
疑问

对照文档存在两个疑问:

  1. 通过变量设置的URL值为何会被重置?
  2. callonce功能是否未正确缓存执行结果?

内容的提问来源于stack exchange,提问作者mike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 20:44:57