【问题标题】:How to set and retrieve the global variable's values in the feature file in karate?如何在空手道的特征文件中设置和检索全局变量的值?
【发布时间】:2019-06-29 00:42:21
【问题描述】:

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


    【解决方案1】:

    一旦在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 - 所以不要考虑“全局”变量 - 只要在需要的地方使用可重用的功能。

    如果您确实需要在开始时设置一次性变量,这就是 callSingle() 的用途:https://github.com/intuit/karate#hooks - 但首先尝试让基础知识发挥作用,因为您是空手道新手。

    【讨论】:

    • 嗨,@彼得。感谢你的回答。据我了解,如果我们使用“call”选项,签名功能将再次运行。 “def signIn = 调用读取('classpath:my-signin.feature')”。在我的项目中,登录令牌的有效期为 30 分钟,我不想一次又一次地运行它。同样对于用户id场景,我们不能一次次调用获取用户id,因为如果我们第二次调用该场景,UAT会抛出一个错误消息作为重复用户创建。
    • @RajkamalS。那么请按照我的建议查看callSingle()
    • 是的@Peter,我读到了一个选项 "karate.callSingle(fileName, [arg])" 但我的大多数项目正面案例都会返回 id 或令牌。那么,如何将这个 callSingle 用于所有阳性病例?
    • @RajkamalS。最后一次 - 请阅读文档和示例。在 karate-config.js 中使用 callSingle() - 您将获得一个可以在所有积极情况下使用的令牌。如果这个答案没有帮助,也许空手道对你来说太复杂了——所以请使用另一个框架
    • 感谢您的回答。我会清楚地阅读文档。
    猜你喜欢
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多