============================= 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 = 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 ========================= ==> ERROR: A failure occurred in check().  Aborting...