Crée un dossier tests et un fichier test_auth.py.
1. Tester un Modèle (Unitaire)
def test_password_hashing():
u = User(username='test', email='test@test.com')
u.set_password('cat')
assert u.check_password('cat') # Doit être Vrai
assert not u.check_password('dog') # Doit être Faux
2. Tester une Vue (Intégration)
On utilise la fixture client qu'on a définie avant.
def test_login_page(client):
# On fait un GET sur /login
response = client.get('/auth/login')
assert response.status_code == 200
assert b"Se connecter" in response.data # On vérifie que le texte est dans le HTML
3. Tester une action (POST)
def test_register(client, app):
# On envoie des données
response = client.post('/auth/register', data={
'username': 'bob',
'email': 'bob@gmail.com',
'password': 'password123',
'confirm': 'password123'
}, follow_redirects=True) # On suit la redirection après le POST
assert response.status_code == 200
assert b"Compte créé" in response.data # Message flash
# Vérifions en base
with app.app_context():
assert User.query.count() == 1
assert User.query.first().username == 'bob'
Si tu lances pytest, tu verras des points verts .. s'afficher. C'est satisfaisant. 🟢