Karate 如何设置和检索全局变量';在“空手道”功能文件中的s值?

Karate 如何设置和检索全局变量';在“空手道”功能文件中的s值?,karate,Karate,我不熟悉这个空手道框架。我想将用户创建ID设置为来自用户创建功能文件的全局变量,并在另一个功能文件中使用相同的ID。我读了一些文档,但没有帮助我成功 我尝试使用karate-config.js文件创建变量,并尝试在功能文件中使用该变量。但是没有起作用 var config = { env: env, baseUrl: 'http://**************', pds5_id: 'empty', pds5_token: 'empty' } Giv

我不熟悉这个空手道框架。我想将用户创建ID设置为来自用户创建功能文件的全局变量,并在另一个功能文件中使用相同的ID。我读了一些文档,但没有帮助我成功

我尝试使用karate-config.js文件创建变量,并尝试在功能文件中使用该变量。但是没有起作用

  var config = {
    env: env,
    baseUrl: 'http://**************',
    pds5_id: 'empty',
    pds5_token: 'empty'
  } 

Given path 'pds','identities' 
  And request {}
 When method post
 Then status 200
  And def pds_id = response.id
  And set pds5_id = pds_id    
我希望将此用户id保存到全局变量“pds5_id”中,但出现以下错误

com.intuit.karate.exception.KarateException: create_identities.feature:16 - cannot set json path on unexpected type: [type: STRING, value: empty]
    at ✽.And set pds5_id = pds_id (create_identities.feature:16)

一旦在
karate config.js
中设置了一个变量,您就无法更改它,因此这是错误的(并且
set
仅适用于带有路径表达式的JSON):

您需要阅读的是文档的这一部分:

深呼吸,仔细阅读,时间是值得的。你会找到答案的

请记住,让一个
场景依赖另一个是错误的:-因此不要考虑“全局”变量-只要在需要的地方使用可重用的功能即可


如果你真的需要在一开始就设置一次性变量,这就是
callSingle()
的目的:-但是首先要尝试让基础工作起来,因为你是空手道新手。

一旦在
Karate config.js
中设置了变量,你就无法更改它,所以这是错误的(并且
set
仅适用于带有路径表达式的JSON):

您需要阅读的是文档的这一部分:

深呼吸,仔细阅读,时间是值得的,你会找到答案的

请记住,让一个
场景依赖另一个是错误的:-因此不要考虑“全局”变量-只要在需要的地方使用可重用的功能即可


如果你真的需要在一开始就设置一次性变量,这就是
callSingle()
的目的:-但是首先要尝试让基础工作起来,因为你是空手道新手。

Hi,@Peter。谢谢你的回答。据我所知,如果我们使用“call”选项,符号功能将再次运行。“def signIn=call read”('classpath:my signin.feature')”。在我的项目中,登录令牌的有效期为30分钟,我不想反复运行。此外,对于用户id方案,我们不能反复调用以获取用户id,因为如果我们第二次调用该方案,UAT将抛出一条错误消息作为重复用户创建。@RajkamalS。然后请查看
callSingle()
正如我已经建议的Yes@Peter,我读到了一个选项“karate.callSingle(fileName,[arg]),但我的大多数项目阳性案例都会返回id或令牌。那么,如何将此callSingle用于所有阳性案例?@RajkamalS。最后一次-请阅读文档和示例。使用
callSingle()
在karate-config.js中-您将获得一个令牌,可以在所有积极案例中使用。如果这个答案没有帮助,可能空手道对您来说太复杂了-因此请使用另一个框架谢谢您的回答。我会清楚地阅读文档。嗨,@Peter。谢谢您的回答。据我所知,签名功能将运行如果我们使用'call'选项,则会获得收益。“def signIn=call read('classpath:my signIn.feature')”。在我的项目中,登录令牌的有效期为30分钟,我不想反复运行。此外,对于用户id方案,我们不能反复调用以获取用户id,因为如果我们第二次调用该方案,UAT将抛出一条错误消息作为重复用户创建。@RajkamalS。然后请查看
callSingle()
正如我已经建议的Yes@Peter,我读到了一个选项“karate.callSingle(fileName,[arg]),但我的大多数项目阳性案例都会返回id或令牌。那么,如何将此callSingle用于所有阳性案例?@RajkamalS。最后一次-请阅读文档和示例。使用
callSingle()
在karate-config.js中-您将获得一个令牌,可以在所有积极案例中使用。如果这个答案没有帮助,可能空手道对您来说太复杂了-因此请使用另一个框架谢谢您的回答。我将清楚地阅读文档。
And set pds5_id = pds_id