Tests isoleren met een testdatabase
Gebruik per testrun een wegwerpdatabase.
Tests isoleren met een testdatabase is een gratis Flask Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Flask Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Flask Academy bevat in totaal 4 lessen.
Waarom je de database isoleert
Tests mogen nooit je echte gegevens aanraken. Een testdatabase houdt elke uitvoering schoon, zodat de ene test nooit een andere test of rijen in productie kan beschadigen.
Een tijdelijke SQLite-database gebruiken
De eenvoudigste keuze is een SQLite-database in het geheugen. Deze bestaat alleen in het RAM en verdwijnt zodra het testproces eindigt.
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:'De testconfiguratie inschakelen
Stel TESTING in op True voordat de tests worden uitgevoerd. Hierdoor wordt het opvangen van fouten uitgeschakeld, zodat uitzonderingen duidelijk in je uitvoer verschijnen.
app.config['TESTING'] = TrueEen leeg schema opbouwen
Roep binnen een app-context db.create_all() aan. Hiermee worden alle tabellen uit je modellen opgebouwd, zodat elke testuitvoering met een leeg schema begint.
with app.app_context():
db.create_all()Opruimen na de tests
Roep na de test db.drop_all() aan om alle tabellen te verwijderen. Zo weet je zeker dat de volgende uitvoering geen achtergebleven rijen overneemt.
with app.app_context():
db.drop_all()Dit in een fixture plaatsen
Verpak het instellen en opruimen in één fixture. De code vóór yield maakt het schema aan; de code erna verwijdert alles netjes.
@pytest.fixture
def app_db():
db.create_all()
yield
db.drop_all()Voorbeeldgegevens toevoegen
Veel tests hebben een bekende rij nodig om te kunnen lezen. Voeg een record toe in de fixture en commit dit, zodat de test met een voorspelbare toestand begint.
db.session.add(User(name='Ada'))
db.session.commit()Waarom een schone toestand belangrijk is
Tests moeten in elke volgorde slagen. Isolatie betekent dat elke test dezelfde begingegevens ziet, zodat resultaten nooit afhangen van wat daarvoor is uitgevoerd.
Tussen tests terugdraaien
Een alternatief voor het opnieuw maken van tabellen is een rollback. Plaats elke test in een transactie en draai die daarna terug voor een snelle, schone begin toestand.
db.session.rollback()De testconfiguratie gescheiden houden
Bewaar testinstellingen in een speciale klasse TestConfig. Je factory laadt deze alleen tijdens tests, nooit tijdens ontwikkeling of in productie.
class TestConfig:
TESTING = True
SQLALCHEMY_DATABASE_URI = 'sqlite:///:memory:'Nooit tegen productie testen
Controleer altijd of de URI naar een testdatabase verwijst. Tests naar productiegegevens laten wijzen is de snelste manier om echte records kwijt te raken.
Snelle controle
Je wilt tests die echte gegevens nooit beschadigen. Welke database gebruik je?
Samenvatting: testdatabase
Je start een schone testdatabase op, voegt bekende gegevens toe en ruimt alles daarna op. Nu zijn je tests snel, herhaalbaar en veilig. 🗄️
Leer Python met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 30
- Lessen
- 120
Veelgestelde vragen
Is de les “Tests isoleren met een testdatabase” gratis?
Ja — de volledige tekst van “Tests isoleren met een testdatabase” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Flask Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Flask Academy bevat in totaal 4 lessen.
Wat leer ik in “Tests isoleren met een testdatabase”?
Gebruik per testrun een wegwerpdatabase. Je oefent met Flask Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Flask Academy te beginnen?
Ervaring vooraf is niet nodig. Flask Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “Tests isoleren met een testdatabase”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Flask Academy?
Ja. Elke les over Flask Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- De testclient en fixtures
- Routes en JSON controleren
- Tests isoleren met een testdatabase
- Geauthenticeerde endpoints testen