Отправка составного запроса с помощью aiohttp - PullRequest
2 голосов
/ 27 мая 2020

Я пытаюсь создать тестовый пример для своего представления, и теперь я хотел бы отправить запрос mutipart с учетными данными пользователя, содержащими изображение пользователя. Я использую MultipartWriter, но когда я пытаюсь прочитать части, я получаю значение None. Я уверен, что мой тестовый пример написан неправильно.
Спасибо за вашу помощь и извините за мой плохой английский sh.

Мой тестовый пример:

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 Ответ

1 голос
/ 28 мая 2020

Хорошо, я нашел способ, для которого не нужен составной писатель. Теперь я использую 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
...