Мне нужно реализовать этот запрос в каратэ:
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-файл или использую файл с другим расширением:
А вот так выглядит запрос в логах каратэ:
Кажется, я ничего не отправляю в виде тела после преобразования в строку
Внесите это изменение:
* def fileContents = karate.readAsString('classpath:newUser.csv')
* multipart file csv = { value: '#(fileContents)' }
См.: https://github.com/karatelabs/karate#csv-files
@EstebanManosalva, тогда просто добавьте contentType: 'text/csv'
или что-то еще, что ожидает ваш сервер. Мне очень жаль, потому что на вопросы, состоящие из нескольких частей, ужасно сложно ответить, если вы не можете воспроизвести их. поэтому я предлагаю прочитать это, если вышеперечисленное не работает, и я желаю вам всего наилучшего: github.com/karatelabs/karate/issues/1645#issuecomment-862502881
@EstebanManosalva также добавляет filename: 'somename.csv'
, чтобы сервер видел файл с расширением .csv
. см.: github.com/karatelabs/karate#multipart-file
Спасибо чувак! Это сработало! Наконец, добавление contentType и имени файла решило проблему.
@EstebanManosalva, это приятно знать. спасибо за принятие ответа, и эта тема поможет другим
Привет, Питер, я ценю ваш быстрый ответ на этот вопрос, но если я это сделаю, мой сервис скажет мне, что разрешены только файлы CSV, по крайней мере, теперь он правильно принимает параметр формы csv, но кажется, что я не отправляю ни один файл