Tester une application Django¶
Réalisons à présent quelques tests unitaires sur notre app Django.
Un test unitaire bébête¶
# A mettre dans le fichier tests.py de l'app Django
from django.core.urlresolvers import resolve
from django.test import TestCase
from lists.views import home
from django.template.loader import render_to_string
class StringTest(TestCase):
'''Test unitaire bidon'''
def test_concatene(self):
self.assertEqual("Bon"+"jour", "Bonjour")
Un test qui vérifie la méthode gérant la racine du site:¶
# A mettre dans le fichier tests.py de l'app Django
from django.core.urlresolvers import resolve
from django.test import TestCase
from lists.views import home
class HomePageTest(TestCase):
'''
Test unitaire de la page accueil sur la racine du projet
On vérifie que la méthode home() est bien invoquée sur /
'''
def test_root_url_resolves_to_home_view(self):
found = resolve('/')
self.assertEqual(found.func, home)
Puis un test vérifiant si le contenu présenté correspond bien à celui du template home.html¶
# A mettre dans le fichier tests.py de l'app Django
from django.core.urlresolvers import resolve
from django.test import TestCase
from lists.views import home
from django.template.loader import render_to_string
class HomePageTestContent(TestCase):
'''Test Unitaire pour vérifier si le contenu de la page d'accueil est bien retourné par home()'''
request = HttpRequest()
response = home(request)
expected_html = render_to_string('home.html')
self.assertEqual(response.content.decode(), expected_html)
Pour tester:
./manage.py test
Constatez l’échec du test.
Puis ajouter la route et la vue correspondante pour que le test passe …
Test de la route “/lesTaches/” et du contenu de la page d’accueil¶
from lesTaches.views import accueil
from django.urls import resolve
from django.http.request import HttpRequest
class AccueilPageTest(TestCase):
'''
Test unitaire de la page accueil sur la racine du projet
On vérifie que la méthode accueil() est bien invoquée sur /
'''
def test_accueil_url_resolves_to_accueil_view(self):
found = resolve('/lesTaches/')
self.assertEqual(found.func, accueil)
def test_accueil_page_content(self):
'''
Test Unitaire pour vérifier si le contenu de la page d'accueil
de l'app lesTaches est bien retourné par la view accueil()
'''
req = HttpRequest()
response = accueil(req)
expected = "Bienvenue ici"
self.assertEqual(response.content.decode(), expected)