Установка глобальных переменных в каратэ из одной функции для использования в другой функции
Эта проблема
У меня есть 3 разных файла функций. Один для EndToEndTest.feature (тест интеграции), один для create-service.feature (базовый вызов API), а другой для create-тарифа (вызов API, который требует ответа от create-service.feature)
EndToEndTest.feature
Feature: End To End Standard
Background:
* def result = call read('../get-user-token.feature')
* def service = call read('create-service.feature')
* def location = service.responseHeaders['Location'][0]
* def serviceId = location.substring(location.lastIndexOf('/') + 1)
# I want serviceId to be set globally so I can access it into the create-tariff.feature
* def tariff = call read('create-tariff.feature')
создание-tariff.feature
Feature: Create Tariff
Background:
* def result = call read('../../get-user-token.feature')
* def service = serviceId
Очевидно, что второе определение здесь (service = serviceid) завершится ошибкой, так как не сможет получить набор serviceId из первого
Мой вопрос заключается в том, каков наилучший способ передачи одной переменной (serviceId) из EndToEndTest.feature для присвоения другой переменной (service) в create-тарифе.feature
1 ответ
Наличие функций зависит друг от друга, это очень плохая практика, и я не рекомендую это. Вы не должны даже иметь Scenario
зависит от других.
Пожалуйста, прочитайте это: https://github.com/intuit/karate
Обратите внимание, что у вас есть крючки - особенно karate.callSingle()
но он предназначен только для ситуаций, когда вы входите в систему и получаете токен, а затем должны использовать его заново.