Django

Testing Django

TestCase, client, and testing views

Testing Django

# tasks/tests.py
from django.test import TestCase, Client
from django.contrib.auth import get_user_model
from .models import Project, Task

class TaskViewTests(TestCase):
    def setUp(self):
        self.client = Client()
        self.user = get_user_model().objects.create_user("ada", password="test-pass-123")
        self.project = Project.objects.create(name="Sprint 1", owner=self.user)

    def test_task_list_requires_login(self):
        response = self.client.get("/tasks/")
        self.assertEqual(response.status_code, 302)

    def test_create_task(self):
        self.client.login(username="ada", password="test-pass-123")
        response = self.client.post("/tasks/new/", {
            "project": self.project.pk,
            "title": "Write docs",
            "priority": "med",
        })
        self.assertEqual(Task.objects.count(), 1)
python manage.py test tasks