Testing
Django Testing#
When you create an app the tests.py
file is already created
It has the import
:
from django.test import TestCase
So we extend from that to write our test:
class CourseModelTest(TestCast):
def test_course_creation(self):
course = Course.objects.create(
title="Python Regular Expressions",
description="Learn to write regular expression in python"
)
now = timezone.now()
self.assertLess(course.created_at, now)
Run the test#
./manage.py test
Set Up#
Create your models at beignning of every test
class CourseModelTest(TestCase):
def setUp(self):
model = Course.objects.create(....)
Testing views#
Using the name to get the route to view
from django.core.urlresolvers import reverse
When testing views you get a self.client
which is like a browser
response = self.client.get(reverse('courses:list'))
self.assertEqual(response.status_code, 200)
The client has a context on django views
self.assertIn(self.course, response.context['courses'])
self.assertIn(self.course2, response.context['courses'])
Testing URL with primary keys#
response = self.client.get(reverse('courses:step', kwargs={
'course_pk': self.course.pk,
'step_pk': self.step.pk
}))
Use `kwargs`