使用karate.get时是否支持callonce函数?相关报错咨询
Karate中预准备请求头的写法问题
需求
希望在场景运行前确保请求头已准备就绪,尝试使用如下代码实现:
* def authHeaders = karate.get('#(authHeaders)', callonce read('classpath:adapters/authentication.feature'))
初始报错
执行后出现语法错误:
org.graalvm.polyglot.PolyglotException: SyntaxError: Unnamed:1:39 Expected , but found read karate.get('#(authHeaders)', callonce read('classpath:adapters/authentication.feature'))
尝试用括号包裹调用的默认值后,仍报相同错误。后续又尝试了多种写法,结果如下:
尝试1
写法:
* def authtHeaders = karate.get('authHeaders', '#(read("classpath:adapters/authentication.feature"))') * print authHeaders
结果:
01: karate.log('[print]',authHeaders) <<<< org.graalvm.polyglot.PolyglotException: ReferenceError: "authHeaders" is not defined
尝试2
写法:
* def authtHeaders = karate.get('authHeaders', '#(read(\'classpath:adapters/authentication.feature\'))') * print authHeaders
结果:
01: karate.log('[print]',authHeaders) <<<< org.graalvm.polyglot.PolyglotException: ReferenceError: "authHeaders" is not defined - <js>.:program(Unnamed:1)
尝试3
写法:
* def authtHeaders = karate.get('authHeaders', read('#(classpath:adapters/authentication.feature)'))
结果:
01: karate.get('authHeaders', read('#(classpath:adapters/authentication.feature)')) <<<< org.graalvm.polyglot.PolyglotException: java.io.FileNotFoundException: <<myRoot>>/src/test/java/adapters/#(classpath:adapters/authentication.feature) (No such file or directory)
尝试4
写法:
* def authtHeaders = karate.get('authHeaders', read('#(\'classpath:authentication.feature\')'))
结果:
01: karate.get('authHeaders', read('#(\'classpath:authentication.feature\')')) <<<< org.graalvm.polyglot.PolyglotException: java.io.FileNotFoundException: <<myRoot>>/src/test/java/adapters/#('classpath:authentication.feature') (No such file or directory)
尝试5
写法:
* def authtHeaders = karate.get('authHeaders', read('authentication.feature'))
结果:
01: karate.log('[print]',authHeaders) <<<< org.graalvm.polyglot.PolyglotException: ReferenceError: "authHeaders" is not defined
尝试6
写法:
* def authHeaders = '#(karate.get(\'authHeaders\', callonce read(\'classpath:adapters/authentication.feature\')))' * print authHeaders
结果:
13:49:07.424 [com.intuit.karate.cli.Main.main()] INFO com.intuit.karate - [print] #(karate.get('authHeaders', callonce read('classpath:adapters/authentication.feature')))
尝试7
写法:
* def authHeaders = #(karate.get('authHeaders', callonce read('classpath:adapters/authentication.feature')))
结果:
01: #(karate.get('authHeaders', callonce read('classpath:adapters/authentication.feature'))) <<<< org.graalvm.polyglot.PolyglotException: SyntaxError: Unnamed:1:0 Expected an operand but found error #(karate.get('authHeaders', callonce read('classpath:adapters/authentication.feature'))) ^
疑问
请问这种karate.get结合callonce read的用法是否被支持?或者有没有其他可行的实现方式来确保场景运行前请求头就绪?
内容的提问来源于stack exchange,提问作者mike
相关产品推荐
相关产品推荐

