提问者:小点点

如何在空手道中设置和检索特征文件中的全局变量值?


我是空手道框架的新手。我想在用户创建特征文件中将用户创建ID设置为一个全局变量,并想在另一个特征文件中使用相同的ID。我读了一些文档,但它并没有帮助我成功。

我尝试空手道配置.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)

共1个答案

匿名用户

一旦在< code >空手道-配置. js中设置了变量,您就不能更改它,所以这是错误的(并且< code>set只对带有路径表达式的JSON有效):

And set pds5_id = pds_id

您需要阅读的是文档的这一部分:https://github.com/intuit/karate#calling-other-feature-files

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

请记住,让一个Scenario依赖于另一个是错误的:https://github.com/intuit/karate#script-structure-所以不要考虑“全局”变量-只要在需要的地方使用可重用的特性。

如果你真的需要在开始的时候设置一个一次性的变量,这就是< code>callSingle()的作用:https://github.com/intuit/karate#hooks——但是首先试着让基础工作起来,因为你是空手道新手。