0Pricing
Flask Academy · Lektion

Tests mit einer Testdatenbank isolieren

Verwenden Sie pro Testlauf eine temporäre Datenbank.

Tests mit einer Testdatenbank isolieren ist eine kostenlose Flask Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Flask Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Flask Academy-Kurs umfasst insgesamt 4 Lektionen.

Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.

Why Isolate the Database

Tests must never touch your real data. A test database keeps every run clean, so one test can never corrupt another or your production rows.

Use a Throwaway SQLite DB

The easy choice is an in-memory SQLite database. It lives only in RAM and vanishes the moment the test process ends.

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:'

Flip on Testing Config

Set TESTING to True before tests run. It turns off error catching so exceptions surface clearly in your output.

app.config['TESTING'] = True

Build a Fresh Schema

Inside an app context, call db.create_all(). It builds every table from your models so each test run starts from an empty schema.

with app.app_context():
    db.create_all()

Tear Down After Tests

After the test, call db.drop_all() to remove every table. This guarantees the next run cannot inherit leftover rows.

with app.app_context():
    db.drop_all()

Put It in a Fixture

Wrap setup and teardown in one fixture. The code before yield creates the schema; the code after it drops everything cleanly.

@pytest.fixture
def app_db():
    db.create_all()
    yield
    db.drop_all()

Seed Sample Data

Many tests need a known row to read. Add a record in the fixture, then commit it so the test starts from a predictable state.

db.session.add(User(name='Ada'))
db.session.commit()

Why Fresh State Matters

Tests should pass in any order. Isolation means each test sees the same starting data, so results never depend on what ran before.

Roll Back Between Tests

An alternative to recreating tables is a rollback. Wrap each test in a transaction and undo it afterward for a fast, clean slate.

db.session.rollback()

Keep Test Config Separate

Store test settings in a dedicated TestConfig class. Your factory loads it only during tests, never in development or production.

class TestConfig:
    TESTING = True
    SQLALCHEMY_DATABASE_URI = 'sqlite:///:memory:'

Never Test Against Prod

Always double-check the URI points at a test database. Pointing tests at production data is the fastest way to lose real records.

Quick Check

You want tests that never harm real data. What database do you use?

Recap: Test Database

You spin up a clean test database, seed known data, and tear it down after. Now your tests are fast, repeatable, and safe. 🗄️

Häufig gestellte Fragen

Ist die Lektion „Tests mit einer Testdatenbank isolieren“ kostenlos?

Ja — der vollständige Text von „Tests mit einer Testdatenbank isolieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Flask Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Flask Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Tests mit einer Testdatenbank isolieren“?

Verwenden Sie pro Testlauf eine temporäre Datenbank. Du übst Flask Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Flask Academy zu starten?

Keine Vorkenntnisse erforderlich. Flask Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Tests mit einer Testdatenbank isolieren“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Flask Academy-Lektion Code schreiben und ausführen?

Ja. Jede Flask Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Der Test-Client und Fixtures
  2. Routen und JSON prüfen
  3. Tests mit einer Testdatenbank isolieren
  4. Authentifizierte Endpoints testen
← Zurück zu Flask Academy