Karate框架跨Feature文件传递Token参数值失败问题求助
解决Karate中调用Feature后变量未传递导致查询参数值为变量名的问题
你遇到的核心问题是:调用Token.feature时未正确捕获返回的txnToken变量,导致后续使用时Karate将txnToken识别为字符串字面量,而非实际Token值。以下是具体修复步骤:
步骤1:修改Token.feature,返回生成的Token
在Token.feature的Scenario末尾添加返回逻辑,让该Feature能将生成的Token传递给调用方:
Feature: Getting the Token Background: * header Content-Type 'application/json' * def CookieGenerator = Java.type('com.ade.Helpers.CookiesGenerator'); * def endpoints = read('classpath:src/test/java/com/ade/resources/endpoints.json') * url endpoints.token Scenario: To check the Schema of the response * cookies (new CookieGenerator().getCookieValue()) * method GET * status 200 * def txnToken = response * print txnToken * return txnToken
(注:修正了原代码中def endpoints read的语法错误,补充了等号;同时移除了非标准的<ul>代码块,改用Karate标准的*步骤前缀)
步骤2:在第二个Feature中接收Token并正确引用
修改第二个Feature中调用Token.feature的语句,显式接收返回值,确保后续查询参数能读取到实际Token:
Feature: Testing datent Name and Client Background: * header Content-Type 'application/json' * def endpoints = read('classpath:src/test/java/com/ade/resources/endpoints.json') * def CookieGenerator = Java.type('com.ade.Helpers.CookiesGenerator'); * def txnToken = call read('Token.feature') * url baseUrl + endpoints.dit.Client.path Scenario: To check the Schema of the response * def head = read('classpath:src/test/java/com/ade/resources/reqpay.json') * def req = head.data[1] * cookies (new CookieGenerator().getCookieValue()) * request req * param txntoken = txnToken * method post * status 200
(注:修正了原代码中def head read的语法错误,补充了等号;简化了param的写法,Karate会自动解析txnToken变量的实际值)
关键说明
- Karate中使用
call调用Feature时,必须显式接收返回值,才能在当前Feature的作用域内使用该变量。 - 所有变量定义需遵循
def 变量名 = 值的语法,缺少等号会导致变量未正确初始化。
内容的提问来源于stack exchange,提问作者Ajay tiruwa
相关产品推荐
相关产品推荐

