Search code examples
pythondjangodjango-unittest

AttributeError: 'TestSuite' object has no attribute 'client'


I'm writing Django unit test for Login form. Below is my sample code.

from unittest import TestCase
from django.contrib.auth.models import User


class TestSuite(TestCase):
    def setUp(self):
        self.credentials = {
            'username': 'testuser',
            'password': 'secret'}
        User.objects.create_user(**self.credentials)

    def test_login(self):
        # send login data
        response = self.client.post('/accounts/login', self.credentials, follow=True)
        # should be logged in now
        self.assertTrue(response.context['user'].is_active)

But when I'm executing from my console it's throwing the below error.

Traceback

System check identified no issues (0 silenced).
E
======================================================================
ERROR: test_login (accounts.tests.test_form.TestSuite)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Django\webapplication\accounts\tests\test_form.py", line 15, in test_login
    response = self.client.post('/accounts/login', self.credentials, follow=True)
AttributeError: 'TestSuite' object has no attribute 'client'

----------------------------------------------------------------------
Ran 1 test in 0.502s

Solution

  • The problem is that python unittest module has not client in it; You should use django.test.

    Simply change your first line as:

    from django.test import TestCase
    

    Read more about different test classes available to use.