Каратэ: как отправить переменную в файл json

Я пытаюсь создать динамический запрос, который должен получить 2 параметра (имя пользователя и пароль). Для этого я определил следующий файл JSON:

{
  "grant_type": "password",
  "client_id": "myClient",
  "username": "#(username)",
  "password": "#(password)"
}

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

Scenario: Get Sugar access token
    Given url baseUrl
    And path 'oauth2/token'
    And def username = 'user'
    And def password = 'password'
    And def requestBody = read('classpath:jsonFiles/requests/authRequest.json')
    When request requestBody
    And method POST
    Then status 200
    * print 'Response: ', response

К сожалению, когда я запускаю сценарий, я получаю сообщение об ошибке ниже

10:59:59.111 [main]  INFO  com.intuit.karate - Karate version: 1.4.0-SNAPSHOT
10:59:59.286 [main]  INFO  com.intuit.karate.Suite - backed up existing 'target\karate-reports' dir to: target\karate-reports_1672160399285
10:59:59.303 [main]  INFO  c.intuit.karate.core.FeatureRuntime - found scenario at line: 4
11:00:00.174 [main]  ERROR com.intuit.karate - src/test/java/myCompany/testautomation/features/auth/getToken.feature:11
And def requestBody = read('classpath:jsonFiles/requests/authRequest.json')
js failed:
>>>>
01: read('classpath:jsonFiles/requests/authRequest.json')
<<<<
org.graalvm.polyglot.PolyglotException: not found: jsonFiles/requests/seugarAuth/authRequest.json
- com.intuit.karate.resource.ResourceUtils.getResource(ResourceUtils.java:126)
- com.intuit.karate.core.ScenarioFileReader.toResource(ScenarioFileReader.java:129)
- com.intuit.karate.core.ScenarioFileReader.readFileAsStream(ScenarioFileReader.java:99)
- com.intuit.karate.core.ScenarioFileReader.readFileAsString(ScenarioFileReader.java:95)
- com.intuit.karate.core.ScenarioFileReader.readFile(ScenarioFileReader.java:54)
- com.intuit.karate.core.ScenarioEngine.lambda$new$0(ScenarioEngine.java:120)
- <js>.:program(Unnamed:1)

src/test/java/myCompany/testautomation/features/auth/getToken.feature:11
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Использование classpath: имеет больше смысла для проектов Java. Похоже, вы используете расширение кода Visual Studio, и в этом случае корневая папка вашей рабочей области будет путем к классам, если не переключиться в «режим Maven» или эквивалентный: https://marketplace.visualstudio.com/items?itemName= karatelabs.karate#run-mode

Или другой вариант — использовать «раннер» Java и использовать расширение Java для VS Code.

Если все вышеперечисленное не имеет смысла, пока просто не усложняйте и используйте относительные пути. Например, если authRequest.json находится рядом с вашим файлом функций, это будет работать:

* def requestBody = read('authRequest.json')

Можно использовать относительные пути и префикс this:, но я оставляю это на ваше усмотрение: https://github.com/karatelabs/karate#path-prefixes

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