Karate feature文件传入参数验证及参数被覆盖问题排查
Karate Feature文件传入参数验证问题
场景与代码实现
在IT服务级认证的子配置中,编写了如下代码:
karate.log ('portalAuthValues: ', portalAuthValues.sessionId); domainAuthResults = karate.callSingle('classpath:adapters/domainsession.feature', { authHeader: loginAuthResults.sessionId, baseUrlDomain: baseUrlDomain });
在对应的feature文件中,尝试通过带默认值的karate.get检查传入参数是否存在,但未达到预期效果:
Background: Calling authentication * print 'portalAuthValues are' * print portalAuthValues * def portalAuthValues = karate.get('portalAuthValues', karate.call('classpath:adapters/authentication.feature', { username : username, password: password }))
现象与核心问题
日志明确显示portalAuthValues已存在,但传入的值未被karate.get识别,反而被覆盖:
07:31:46.546 [com.intuit.karate.cli.Main.main()] INFO com.intuit.karate - [print] portalAuthValues are 07:31:46.551 [com.intuit.karate.cli.Main.main()] INFO com.intuit.karate - [print] { "BaseHeaders": { "Authorization": "Bearer ... 07:31:46.615 [com.intuit.karate.cli.Main.main()] DEBUG c.intuit.karate.core.ScenarioEngine - over-writing existing variable 'portalAuthValues' with new value: karate.get('portalAuthValues', karate.call('classpath:adapters/authentication.feature', { username : username, password: password })) 07:31:46.630 [com.intuit.karate.cli.Main.main()] DEBUG com.intuit.karate - request:
这导致初始登录认证调用被重复执行,且未使用子配置传入的值,而是采用了原始配置的默认值。
疑问:是因为portalAuthValues是JSON对象而非单一值,才导致karate.get无法识别?还是传入的portalAuthValues本就应该被karate.get正常识别?
后续验证结果
添加断言确认portalAuthValues确实存在,但变量依然被覆盖:
>> adapters.domainsession 9650 4 * assert portalAuthValues != null 6 09:53:07.720 << lock released, cached callSingle: classpath:adapters/authentication.feature 09:53:07.734 portalAuthValues: { "BaseHeaders": { "Authorization": "Bearer ...
日志仍输出变量被覆盖的提示:
09:53:07.762 [com.intuit.karate.cli.Main.main()] DEBUG c.intuit.karate.core.ScenarioEngine - over-writing existing variable 'portalAuthValues' with new value: karate.get('portalAuthValues', karate.call('classpath:adapters/authentication.feature', { username : username, password: password }))
(原问题附带图片显示:认证调用被执行两次,karate.get的默认值逻辑未生效)
疑问:既然值明确存在但未被karate.get识别,这是否属于Karate的bug?
内容的提问来源于stack exchange,提问作者mike
相关产品推荐
相关产品推荐

