Aller au contenu principal

3 formations sont désormais disponibles : Python, Flask et JS.

Aller au contenu principal

Oublie unittest (le module par défaut de Python), c'est verbeux. On utilise Pytest, le standard moderne.

Installation

pip install pytest

Configuration (conftest.py)

Ce fichier est "magique". Pytest le lit avant de lancer les tests. On y met nos Fixtures. Une fixture, c'est un état de départ qu'on donne à nos tests (ex: une base de données vide, un client de test...).

import pytest
from app import create_app, db
from app.models import User

@pytest.fixture
def app():
    # On crée une app en mode TEST (donc avec une BDD en mémoire RAM)
    app = create_app('testing') 
    
    with app.app_context():
        db.create_all() # On crée les tables
        yield app # On donne l'app au test
        db.drop_all() # On nettoie après le test (TEARDOWN)

@pytest.fixture
def client(app):
    # Un client qui simule un navigateur
    return app.test_client()

@pytest.fixture
def runner(app):
    # Un runner pour tester les commandes CLI
    return app.test_cli_runner()

Grâce à config.py (vu au Module 6), notre environnement de test est isolé du reste.