Установка глобальных переменных в каратэ из одной функции для использования в другой функции

Эта проблема

У меня есть 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() но он предназначен только для ситуаций, когда вы входите в систему и получаете токен, а затем должны использовать его заново.

Другие вопросы по тегам