Тестирование API каратэ - передача переменной из одного файла функции в другой.

Я хочу передать заголовок авторизации в качестве переменной в другой файл функции. Вот пример, который я пытаюсь сделать:

    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)'. Есть ли способ передать это? Когда я жестко запрограммировал это значение, я не вижу никаких проблем. Не могли бы вы помочь нам передать переменную из одного файла функции в другой. Заранее спасибо.


person Saurabh    schedule 22.08.2017    source источник


Ответы (1)


Пожалуйста, внесите это изменение:

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

Также обратите внимание, что для простых переменных, которые существуют в области видимости (которые также наследуются от «вызывающих» функций), вам не нужно соглашение #(foo):

And header Authorization = basictoken  
person Peter Thomas    schedule 23.08.2017
comment
Я не понимаю, почему исходный код вообще не работает. Существует внешнее определение basictoken, поэтому разве это не должно быть доступно в вызываемом файле? - person davidfrancis; 04.10.2018
comment
@davidfrancis из документов, я думаю, нам нужно передать базовый токен вызываемой функции, то есть UserLogin.feature, которая будет использоваться. Если мы не передадим токен в UserLogin, он не узнает файл функций. - person Bharathan Kumaran; 08.03.2020
comment
Если вы опубликуете полный пример, я уверен, что Питер рассмотрит его за вас. Мы больше не используем карате. - person davidfrancis; 09.03.2020