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

时间:2019-06-28 13:29:52

标签: karate

我是空手道框架的新手。我想将用户创建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)

1 个答案:

答案 0 :(得分:0)

一旦在karate-config.js中设置了变量,您将无法更改它,所以这是错误的(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-因此,不要以“全局”变量来考虑-只需在需要时使用可重用的功能即可。< / p>

如果您确实确实需要在开始时设置一次变量,那就是callSingle()的目的:https://github.com/intuit/karate#hooks-但由于您是新手,因此请首先尝试使基础知识起作用空手道。