【问题标题】:Karate API Testing - Passing variable from one feature file to another空手道 API 测试 - 将变量从一个功能文件传递到另一个
【发布时间】:2020-03-08 13:25:18
【问题描述】:

我希望将授权标头作为变量传递给另一个功能文件。这是我正在尝试做的一个例子:

    Feature: Resource Creation
      Background:
        * url baseUrl

        Scenario: Create Resource
          Given def basictoken = 'Basic Zn*****'          
          And def token = call read('classpath:endpoints/UserLogin.feature')
          Given path 'lobs'
          And header X-XSRF-TOKEN = token.xsrftoken
          And header Cookie = 'SESSION='+token.scookie+'; '+'XSRF-TOKEN='+token.xsrftoken
          And request [{"name":"Boston"}]
          When method post
          Then status 200

这是它所指的文件:

Feature: Common User Login
Background:
  * url baseUrl

Scenario:
  Given path 'security/user'
  And header Authorization = '#(basictoken)'
  When method get
  Then status 200
  Given path 'rname/name'
  When method get
  Then status 200
  And def xsrftoken = responseCookies["XSRF-TOKEN"].value
  And def scookie = responseCookies["SESSION"].value

我在And header Authorization = '#(basictoken)' 时遇到错误 有什么办法可以通过吗?当我将其硬编码为其值时,我看不到任何问题。您能否帮助我们了解如何将变量从一个功能文件传递到另一个功能文件。提前致谢。

【问题讨论】:

    标签: karate


    【解决方案1】:

    请进行此更改:

    Given def token = call read('classpath:endpoints/UserLogin.feature') { basictoken: 'Basic Zn*****' }
    

    另请注意,对于存在于范围内的简单变量(也继承自“调用”功能),您不需要 #(foo) 约定:

    And header Authorization = basictoken  
    

    【讨论】:

    • 我不明白为什么原始代码一开始就不起作用。有一个“basictoken”的外部定义,所以它不应该在被调用的文件中提供吗?
    • @davidfrancis 从文档中,我认为我们需要将基本令牌传递给被调用的功能,即 UserLogin.feature,它将被使用。除非我们将令牌传递给 UserLogin,否则不会知道功能文件。
    • 如果您发布一个完整的示例,我相信 Peter 会为您查看。我们不再使用空手道。
    猜你喜欢
    • 2020-03-30
    • 1970-01-01
    • 2019-02-03
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    • 2021-02-02
    相关资源
    最近更新 更多