============================= test session starts ==============================
platform linux -- Python 3.10.1, pytest-6.2.5, py-1.11.0, pluggy-0.13.1
rootdir: /build/python-starlette/src/starlette-0.14.2, configfile: setup.cfg
plugins: asyncio-0.16.0
collected 220 items

tests/test_applications.py ....................                          [  9%]
tests/test_authentication.py ......                                      [ 11%]
tests/test_background.py ...                                             [ 13%]
tests/test_config.py ..                                                  [ 14%]
tests/test_datastructures.py .............                               [ 20%]
tests/test_endpoints.py ..........                                       [ 24%]
tests/test_exceptions.py ......                                          [ 27%]
tests/test_requests.py ......F..........................                 [ 42%]
tests/test_responses.py ..................                               [ 50%]
tests/test_routing.py ..........................                         [ 62%]
tests/test_schemas.py ..                                                 [ 63%]
tests/test_staticfiles.py ................                               [ 70%]
tests/test_templates.py ..                                               [ 71%]
tests/test_testclient.py .......                                         [ 74%]
tests/test_websockets.py ....................                            [ 83%]
tests/middleware/test_base.py .....                                      [ 85%]
tests/middleware/test_cors.py .........                                  [ 90%]
tests/middleware/test_errors.py .....                                    [ 92%]
tests/middleware/test_gzip.py ....                                       [ 94%]
tests/middleware/test_https_redirect.py .                                [ 94%]
tests/middleware/test_session.py ...                                     [ 95%]
tests/middleware/test_trusted_host.py ...                                [ 97%]
tests/middleware/test_wsgi.py ......                                     [100%]

=================================== FAILURES ===================================
_________________________ test_request_form_urlencoded _________________________

    def test_request_form_urlencoded():
        async def app(scope, receive, send):
            request = Request(scope, receive)
            form = await request.form()
            response = JSONResponse({"form": dict(form)})
            await response(scope, receive, send)
    
        client = TestClient(app)
    
>       response = client.post("/", data={"abc": "123 @"})

tests/test_requests.py:119: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3.10/site-packages/requests/sessions.py:590: in post
    return self.request('POST', url, data=data, json=json, **kwargs)
starlette/testclient.py:415: in request
    return super().request(
/usr/lib/python3.10/site-packages/requests/sessions.py:542: in request
    resp = self.send(prep, **send_kwargs)
/usr/lib/python3.10/site-packages/requests/sessions.py:655: in send
    r = adapter.send(request, **kwargs)
starlette/testclient.py:243: in send
    raise exc from None
starlette/testclient.py:240: in send
    loop.run_until_complete(self.app(scope, receive, send))
/usr/lib/python3.10/asyncio/base_events.py:641: in run_until_complete
    return future.result()
tests/test_requests.py:113: in app
    form = await request.form()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <starlette.requests.Request object at 0x4003849060>

    async def form(self) -> FormData:
        if not hasattr(self, "_form"):
>           assert (
                parse_options_header is not None
            ), "The `python-multipart` library must be installed to use form parsing."
E           AssertionError: The `python-multipart` library must be installed to use form parsing.

starlette/requests.py:233: AssertionError
======================== 1 failed, 219 passed in 5.92s =========================
[1m[31m==> ERROR:[m[1m A failure occurred in check().[m
[1m    Aborting...[m
