Menu

Testing Django Apps

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 test

Assignment

  1. Write model tests for your blog application.
  2. Write view tests that check status codes and content.
  3. Aim for at least 80% test coverage.

Support me!

I am a software engineer giving back to the community - my name is Musila Peter. Join me in empowering learners around the globe by supporting SaneGenius!