+import asyncio
from typing import Callable, List, Optional, Tuple
import httpcore
stream=stream,
)
await request.aread()
+
response = self.handler(request)
+
+ # Allow handler to *optionally* be an `async` function.
+ # If it is, then the `response` variable need to be awaited to actually
+ # return the result.
+
+ # https://simonwillison.net/2020/Sep/2/await-me-maybe/
+ if asyncio.iscoroutine(response):
+ response = await response
+
return (
response.status_code,
response.headers.raw,
response = await client.get("custom://www.example.com")
assert response.status_code == 200
assert response.json() == {"app": "mounted"}
+
+
+@pytest.mark.usefixtures("async_environment")
+async def test_async_mock_transport():
+ async def hello_world(request):
+ return httpx.Response(200, text="Hello, world!")
+
+ transport = httpx.MockTransport(hello_world)
+
+ async with httpx.AsyncClient(transport=transport) as client:
+ response = await client.get("https://www.example.com")
+ assert response.status_code == 200
+ assert response.text == "Hello, world!"