Для API testing использую Python + Pytest. Есть библитека requests.
Есть endpoint ‘blabla/import’, этот endpoint дружит с методом put. В теле метода отправляешь файл
С Postman все просто и легко. Но в python put не хочет кушать путь к файлу, ни открытый файл
Может быть кто-нить нашел решение передачи файлов в put методе или знает как это сделать
google есть у всех, если вы внимательно читали мой вопрос, то
“Но в python put не хочет кушать путь к файлу, ни открытый файл”
В принипе проблему я решил и файл передает, я думаю проблема сейчас в кодировке
Потому что респонс от сервера говорит что у меня файл со старой кодировкой или вообще не xls
При этом валидные файлы только xls, txt, csv. {‘errorMessage’: ‘The file you have uploaded is unreadable. The uploaded file may be corrupt, not an Excel file, or in…ry to upload a file in a newer version of Excel, or in comma separated values (.csv) or delimited text format (.txt).’}
Тогда вам нужно к вашим разработчикам обращаться. Удаленно сложно определеить в чем может быть проблема. Можно при чтении указать кодировку :
import codecs
f = codecs.open('unicode.rst', encoding='utf-8')
B пробовать так передавать. Я бы еще порекомендовал в вашем тесте сделать тестовый файл (проще работать с csv или text file) , перед отправкой запроса прочитать его и вывести output in console. Если проблема с путем или кодировкой, то по идее в print output это будет видно.
Если проблема не с путем, тогда нужна помощь ваших разработчиков - либо попросить у них показать как работает парсер этих файлов, либо самому написать unit test в проекте и проверить на тех же файлах нормально ли парсит приложение внутри. Если unit test проходит, значит проблема в передаче информации через requests и копать уже оттуда.
Спасибо за хорощую подсказку. Решил проблему и все было просто,есть прям в документации либы requests
Один словом л…х
file_name = path_to_file+fileName
files = {‘file’: (file_name, open(file_name, ‘rb’))}
r = requests.post(url, files=files)