Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/httpx/_transports/mock.py: 50%
16 statements
« prev ^ index » next coverage.py v7.2.2, created at 2023-03-26 06:12 +0000
« prev ^ index » next coverage.py v7.2.2, created at 2023-03-26 06:12 +0000
1import asyncio
2import typing
4from .._models import Request, Response
5from .base import AsyncBaseTransport, BaseTransport
8class MockTransport(AsyncBaseTransport, BaseTransport):
9 def __init__(self, handler: typing.Callable[[Request], Response]) -> None:
10 self.handler = handler
12 def handle_request(
13 self,
14 request: Request,
15 ) -> Response:
16 request.read()
17 return self.handler(request)
19 async def handle_async_request(
20 self,
21 request: Request,
22 ) -> Response:
23 await request.aread()
24 response = self.handler(request)
26 # Allow handler to *optionally* be an `async` function.
27 # If it is, then the `response` variable need to be awaited to actually
28 # return the result.
30 # https://simonwillison.net/2020/Sep/2/await-me-maybe/
31 if asyncio.iscoroutine(response):
32 response = await response
34 return response