OUJOOD.COM
Après avoir vérifié vos modèles, il faut s'assurer que vos pages s'affichent sans erreur. Tester une vue, c'est simuler le comportement d'un navigateur : on demande une URL et on regarde si le serveur répond correctement. Django fournit pour cela un outil génial : le Client de test.
Le Client de test (self.client)
Inutile d'ouvrir un vrai navigateur. Dans vos classes de test, vous avez accès à self.client. Cet objet peut envoyer des requêtes GET ou POST vers vos propres URLs et récupérer la réponse complète, incluant le code de statut (200, 404, 302) et le contenu HTML.
from django.test import TestCase
from django.urls import reverse
class ArticleViewTest(TestCase):
def test_affichage_liste(self):
# On simule une visite sur la page de liste
response = self.client.get(reverse('article-list'))
# On vérifie que la page répond bien (code 200)
self.assertEqual(response.status_code, 200)
# On vérifie que le bon template est utilisé
self.assertTemplateUsed(response, 'blog/liste.html')
Vérifier le contenu de la réponse
Un code 200 ne suffit pas toujours. Vous voulez peut-être vérifier qu'un texte précis apparaît bien à l'écran, ou qu'un article que vous venez de créer est présent dans la liste. La méthode assertContains fait exactement cela : elle cherche une chaîne de caractères dans le HTML généré.
def test_presence_titre(self):
response = self.client.get('/')
# On vérifie que le titre du site est présent
self.assertContains(response, "Bienvenue sur mon blog")
Tester les redirections
C'est un point souvent oublié. Si une page est réservée aux membres connectés, vous devez tester qu'un visiteur anonyme est bien redirigé vers la page de connexion. C'est une vérification de sécurité simple mais indispensable pour éviter les fuites de données.
Maintenant que vos pages s'affichent bien, il reste une dernière étape cruciale dans la chaîne de test : vérifier que vos utilisateurs peuvent envoyer des données sans erreur. C'est le rôle de la leçon sur comment tester les formulaires Django.
Par carabde | Mis à jour le 08/05/2026