Отправьте метод POST, используя CSV в качестве данных формы Karate Framework

Мне нужно реализовать этот запрос в каратэ:

curl --location --request POST 'https:/myURL/' \
--header 'Authorization: Bearer myToken' \
--form 'csv=@"newUser.csv"'

PS: файл newUser.csv находится в той же папке, что и моя функция

Вот как я отправляю свой запрос на Postman:

Запрос почтальона

Я пробовал это:

Scenario: Bulk New Users - csv file with 1 user
  Given header Authorization = accessToken
  And multipart field csv = { read: 'newUser.csv', contentType: 'multipart/form-data' }
  When method post
  Then status 202

Но получить 400

Я также пробовал это:

Scenario: Bulk New Users - csv file with 1 user
  Given header Authorization = accessToken
  And form field csv = { read: 'newUser.csv' }
  When method post
  Then status 202

И вроде ничего не отправляю

Наконец, если я попробую это:

Scenario: Bulk New Users - csv file with 1 user
  Given header Authorization = accessToken
  And multipart file csv = { read: 'classpath:newUser.csv'}
  When method post
  Then status 202

Получение: «не удалось найти или прочитать файл: classpath: newUser.csv»

Не знаю, что я здесь делаю неправильно, я вижу много примеров в Интернете, ни один из них не работал у меня, благодарю вас за помощь в этом. заранее спасибо

Обновлено:

Я попробовал решение, данное Питером, но теперь я получаю сообщение от своей службы о том, что разрешены только файлы CSV:

Что будет в случае, если я не прикреплю CSV-файл или использую файл с другим расширением:

А вот так выглядит запрос в логах каратэ:

Кажется, я ничего не отправляю в виде тела после преобразования в строку

Стоит ли изучать 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
70
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Внесите это изменение:

* def fileContents = karate.readAsString('classpath:newUser.csv')
* multipart file csv = { value: '#(fileContents)' }

См.: https://github.com/karatelabs/karate#csv-files

Привет, Питер, я ценю ваш быстрый ответ на этот вопрос, но если я это сделаю, мой сервис скажет мне, что разрешены только файлы CSV, по крайней мере, теперь он правильно принимает параметр формы csv, но кажется, что я не отправляю ни один файл

Esteban Manosalva 30.11.2022 16:54

@EstebanManosalva, тогда просто добавьте contentType: 'text/csv' или что-то еще, что ожидает ваш сервер. Мне очень жаль, потому что на вопросы, состоящие из нескольких частей, ужасно сложно ответить, если вы не можете воспроизвести их. поэтому я предлагаю прочитать это, если вышеперечисленное не работает, и я желаю вам всего наилучшего: github.com/karatelabs/karate/issues/1645#issuecomment-862502‌​881

Peter Thomas 30.11.2022 18:37

@EstebanManosalva также добавляет filename: 'somename.csv', чтобы сервер видел файл с расширением .csv. см.: github.com/karatelabs/karate#multipart-file

Peter Thomas 30.11.2022 18:54

Спасибо чувак! Это сработало! Наконец, добавление contentType и имени файла решило проблему.

Esteban Manosalva 30.11.2022 21:35

@EstebanManosalva, это приятно знать. спасибо за принятие ответа, и эта тема поможет другим

Peter Thomas 01.12.2022 05:55

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