0
0
FastAPIframework~20 mins

Testing with database in FastAPI - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Database Testing Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What is the output of this FastAPI test with a test database?
Consider this FastAPI test code snippet using a test database session. What will be the value of response.status_code after running this test?
FastAPI
from fastapi.testclient import TestClient
from main import app, get_db
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from database import Base

SQLALCHEMY_DATABASE_URL = "sqlite:///./test.db"
engine = create_engine(SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False})
TestingSessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

Base.metadata.create_all(bind=engine)

def override_get_db():
    try:
        db = TestingSessionLocal()
        yield db
    finally:
        db.close()

app.dependency_overrides[get_db] = override_get_db
client = TestClient(app)

def test_read_main():
    response = client.get("/")
    assert response.status_code == 200
A200
B404
C500
D422
Attempts:
2 left
💡 Hint
Think about what the test client does and how the test database is set up.
🔧 Debug
intermediate
2:00remaining
Why does this FastAPI test with database raise an IntegrityError?
Given this test code snippet, why does the test raise an IntegrityError when trying to add a user twice?
FastAPI
def test_create_duplicate_user():
    db = TestingSessionLocal()
    user_data = {"username": "testuser", "email": "test@example.com"}
    user = User(**user_data)
    db.add(user)
    db.commit()
    duplicate_user = User(**user_data)
    db.add(duplicate_user)
    db.commit()  # Raises IntegrityError here
ABecause the test database is not created before running the test
BBecause the database session was not closed before adding the duplicate user
CBecause the User model is missing a primary key definition
DBecause the username or email must be unique and adding duplicate violates this constraint
Attempts:
2 left
💡 Hint
Think about database constraints on unique fields.
📝 Syntax
advanced
2:00remaining
Which option correctly overrides the FastAPI database dependency for testing?
You want to override the get_db dependency in FastAPI to use a test database session. Which option correctly implements this override?
A
def override_get_db():
    db = TestingSessionLocal()
    yield db
    db.close()
B
def override_get_db():
    db = TestingSessionLocal()
    try:
        yield db
    finally:
        db.close()
C
def override_get_db():
    with TestingSessionLocal() as db:
        yield db
D
def override_get_db():
    db = TestingSessionLocal()
    return db
Attempts:
2 left
💡 Hint
Remember how to properly yield a resource and ensure cleanup in Python generators.
state_output
advanced
2:00remaining
What is the number of users in the test database after this test runs?
Given this test code that adds users to the test database, how many users will be in the database after the test completes?
FastAPI
def test_add_users():
    db = TestingSessionLocal()
    user1 = User(username="user1", email="user1@example.com")
    user2 = User(username="user2", email="user2@example.com")
    db.add(user1)
    db.commit()
    db.add(user2)
    db.rollback()
    users = db.query(User).all()
    return len(users)

result = test_add_users()
A2
B0
C1
DRaises an error
Attempts:
2 left
💡 Hint
Think about what commit and rollback do to the database session.
🧠 Conceptual
expert
2:00remaining
Why is using a separate test database important in FastAPI testing?
Which reason best explains why you should use a separate test database when running FastAPI tests that involve database operations?
ATo isolate test data and avoid corrupting or modifying production data during tests
BBecause FastAPI requires a different database type for testing
CTo speed up tests by using an in-memory database only supported in tests
DBecause the test database automatically fixes schema errors during tests
Attempts:
2 left
💡 Hint
Think about safety and data integrity when running automated tests.