Introduction
Django has a built-in test framework based on Python's unittest. You can also use pytest-django for a more Pythonic testing experience.
Writing Django tests
# tests.py
from django.test import TestCase, Client
from django.urls import reverse
from .models import Post
from django.contrib.auth.models import User
class PostModelTest(TestCase):
def setUp(self):
self.user = User.objects.create_user('testuser', password='pass123')
self.post = Post.objects.create(
title='Test Post',
body='Test body',
author=self.user
)
def test_post_creation(self):
self.assertEqual(self.post.title, 'Test Post')
self.assertEqual(str(self.post), 'Test Post')
def test_post_list_view(self):
response = self.client.get(reverse('post_list'))
self.assertEqual(response.status_code, 200)
self.assertContains(response, 'Test Post')
# Run: python manage.py testAssignment
- Write model tests for your blog application.
- Write view tests that check status codes and content.
- Aim for at least 80% test coverage.