OUJOOD.COM
Les formulaires sont la porte d'entrée principale des données de vos utilisateurs. Si un champ obligatoire est oublié ou si un format d'e-mail est incorrect, votre application doit réagir correctement. Tester vos formulaires permet de vérifier que vos règles de validation fonctionnent et que les erreurs sont bien renvoyées à l'utilisateur.
Tester la validation du formulaire seul
Vous n'avez pas toujours besoin de passer par une vue pour tester un formulaire. Vous pouvez l'instancier directement dans votre test avec un dictionnaire de données. C'est la méthode la plus rapide pour vérifier si une règle (comme un nombre minimum de caractères) est bien respectée.
from django.test import TestCase
from .forms import ContactForm
class ContactFormTest(TestCase):
def test_formulaire_valide(self):
donnees = {'nom': 'Carabde', 'email': 'test@exemple.com', 'message': 'Salut !'}
form = ContactForm(data=donnees)
self.assertTrue(form.is_valid())
def test_email_invalide(self):
donnees = {'nom': 'Carabde', 'email': 'mauvais-format', 'message': 'Salut !'}
form = ContactForm(data=donnees)
self.assertFalse(form.is_valid())
# On vérifie que l'erreur porte sur le bon champ
self.assertIn('email', form.errors)
Simuler une soumission POST
Une fois que le formulaire est validé isolément, il faut tester son intégration dans la vue. On utilise alors le client de test pour envoyer une requête POST. Je vous suggère de vérifier deux choses : que l'objet est bien créé en base de données et que l'utilisateur est redirigé vers la bonne page après le succès.
def test_soumission_reussie(self):
donnees = {'titre': 'Nouvel Article', 'contenu': 'Texte du test'}
response = self.client.post('/creer-article/', data=donnees)
# Vérification de la redirection
self.assertEqual(response.status_code, 302)
# Vérification en base de données
self.assertEqual(Article.objects.count(), 1)
Pourquoi tester les erreurs ?
On oublie souvent de tester les cas d'échec. Pourtant, il est vital de s'assurer que si un utilisateur se trompe, il ne tombe pas sur une page d'erreur technique (500), mais qu'il revient sur le formulaire avec des explications claires. Un bon test doit prouver que votre application reste polie, même face à de mauvaises données.
Nous avons terminé le tour d'horizon des tests. Votre code est maintenant sécurisé et prêt à affronter le monde réel. La prochaine étape est de sortir de votre ordinateur pour préparer le déploiement Django.
Par carabde | Mis à jour le 08/05/2026