Challenge - 5 Problems
Async Test Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate2:00remaining
What is the output of this async FastAPI test?
Consider this FastAPI async test using
httpx.AsyncClient. What will be the printed output when running this test?FastAPI
from fastapi import FastAPI from fastapi.testclient import TestClient import pytest import httpx app = FastAPI() @app.get("/hello") async def hello(): return {"message": "Hello, async!"} @pytest.mark.asyncio async def test_hello(): async with httpx.AsyncClient(app=app, base_url="http://test") as client: response = await client.get("/hello") print(response.json()) assert response.status_code == 200
Attempts:
2 left
💡 Hint
Remember that
httpx.AsyncClient supports async context and requests must be awaited.✗ Incorrect
The test uses
httpx.AsyncClient correctly with async context and awaits the GET request. The endpoint returns the JSON with message 'Hello, async!'. So the printed output is the JSON dictionary.📝 Syntax
intermediate2:00remaining
Which option causes a syntax error in async FastAPI test?
Identify which test code snippet will cause a syntax error when testing an async FastAPI endpoint.
FastAPI
from fastapi import FastAPI import pytest import httpx app = FastAPI() @app.get("/data") async def get_data(): return {"data": 123} @pytest.mark.asyncio async def test_data(): async with httpx.AsyncClient(app=app, base_url="http://test") as client: response = await client.get("/data") assert response.status_code == 200
Attempts:
2 left
💡 Hint
Check for missing colons in async context managers.
✗ Incorrect
Option C is missing a colon after the async with statement, causing a syntax error. The other options have correct syntax.
🔧 Debug
advanced2:00remaining
Why does this async test raise RuntimeError?
This async FastAPI test raises
RuntimeError: This event loop is already running. What is the cause?FastAPI
import asyncio import pytest from fastapi import FastAPI import httpx app = FastAPI() @pytest.mark.asyncio async def test_loop(): loop = asyncio.get_event_loop() async with httpx.AsyncClient(app=app, base_url="http://test") as client: response = loop.run_until_complete(client.get("/")) assert response.status_code == 200
Attempts:
2 left
💡 Hint
Think about event loops and how async tests run.
✗ Incorrect
The test function is async and runs inside an event loop. Calling run_until_complete inside it tries to start a new loop on top of the running one, causing RuntimeError.
❓ state_output
advanced2:00remaining
What is the value of
counter after running this async test?Given this FastAPI app with a shared counter, what is the final value of
counter after the test runs?FastAPI
from fastapi import FastAPI import pytest import httpx app = FastAPI() counter = 0 @app.post("/increment") async def increment(): global counter counter += 1 return {"count": counter} @pytest.mark.asyncio async def test_increment(): async with httpx.AsyncClient(app=app, base_url="http://test") as client: await client.post("/increment") await client.post("/increment") await client.post("/increment")
Attempts:
2 left
💡 Hint
Check how the global variable is modified in the async endpoint.
✗ Incorrect
The global counter is incremented three times by the three POST requests, so its final value is 3.
🧠 Conceptual
expert2:00remaining
Which option correctly explains async test isolation in FastAPI?
In async FastAPI tests, why is it important to use fixtures or setup/teardown to isolate test state?
Attempts:
2 left
💡 Hint
Think about how async tests might run in parallel and affect shared data.
✗ Incorrect
Async tests can run concurrently, so if they share mutable global state without isolation, tests can interfere and produce unreliable results.