Отправка составного запроса с помощью aiohttp
Я пытаюсь создать тестовый пример для своего представления, и теперь я хотел бы отправить запрос mutipart с учетными данными пользователя, содержащими изображение пользователя. Я использую MultipartWriter, но когда я пытаюсь прочитать части, я получаю значение None. Я уверен, что мой тестовый пример написан неправильно.
Спасибо за вашу помощь и извините за мой плохой английский.
Мой тестовый пример:
async def test_users_post(app):
with open('user_photo.jpg', 'rb') as file:
user_data = dict(
name='Test1',
password='Password',
grand=True,
description='Blank',
email='test@test.ru',
file=file
)
with MultipartWriter() as mpwriter:
mpwriter.append_form([(key, value) for key, value in user_data.items()])
response = await app['client'].post('/users', data=mpwriter)
assert response.status == 201
Начальные линии обзора:
async def post(self):
reader = await self.request.multipart()
async with self.request.app['db'].acquire() as conn:
data = {}
while True:
field = await reader.next()
print(field) # field is None here
if not field:
# If not fields were read
1 ответ
Хорошо, я нашел способ, для которого не нужен составной писатель. Теперь я использую aiohttp.FormData для упаковки учетных данных пользователя.
async def test_users_post(app):
form = aiohttp.FormData()
user_data = dict(
name='Test1',
password='Password',
description='Blank',
email='test@test.ru',
)
for key, value in user_data.items():
form.add_field(key, value)
form.add_field('photo', open('user_photo.jpg', 'rb'))
response = await app['client'].post('/users', data=form)
assert response.status == 201