AssertionError: False is not True in Django when testing for valid forms

Viewed 26

I am writing a test for my views to check if the POST data is validated but the test failed with this error, self.assertTrue(form.is_valid()) AssertionError: False is not true

Am thinking the error might be coming from the form validity.

Below are my codes

tests.py

class CreateAccountTest(TestCase):
  
    email = "example@gmail.com"

    def test_signup_page_status_code(self):
        response = self.client.get('/accounts/signup/')
        self.assertEqual(response.status_code, 200)
        
    def test_signup_url_by_name_and_uses_correct_template(self):
        response = self.client.get(reverse ('register'))
        self.assertEqual(response.status_code, 200)
        self.assertTemplateUsed(response, 'registration/signup.html')
        
    def test_signup_empty_form(self):
        form = CustomUserCreationForm()
        self.assertIn('first_name', form.fields)
        self.assertIn('last_name', form.fields)
        self.assertIn('password1', form.fields)
        self.assertIn('password2', form.fields)
        
    def test_signup__post_form(self):
        request = HttpRequest()
        request.POST = {
          'email': self.email,
          'first_name': 'Adam',
          'last_name': 'Smith',
          'password1': 'qazxswedcvfr',
          'password2': 'qazxswedcvfr',
        }
        form = CustomUserCreationForm(request.POST)
        self.assertTrue(form.is_valid())
        form.save()
        self.assertEqual(get_user_model().objects.all().count(), 1)

This is My CustomUser model

class CustomUserManager(BaseUserManager):
    """
    Custom user model manger where email is the unique identifiers for authentication rather than username
    """
    def create_user(self, email, password, **extra_fields):
        '''
        Create and save a user with the given email and password
        '''
        if not email:
            raise ValueError(_('Email must be set'))
        email = self.normalize_email(email)
        user = self.model(email=email, **extra_fields)
        user.set_password(password)
        user.save(using=self._db)
        return user

    def create_superuser(self, email, password, **extra_fields):
        '''
        Create and save a superuser with the given email and password
        '''
        extra_fields.setdefault('is_staff', True)
        extra_fields.setdefault('is_superuser', True)
        extra_fields.setdefault('is_active', True)
        if extra_fields.get('is_staff') is not True:
            raise ValueError('SuperUser must have is_staff=True')
        if extra_fields.get('is_superuser') is not True:
            raise ValueError('SuperUser must have is_superuser=True')
        return self.create_user(email, password, **extra_fields)

This is the models.py for the Customusermanager

class CustomUser(AbstractUser):
    username = None
    email = models.EmailField(_('email address'), unique=True)
    
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []
    
    objects = CustomUserManager()
    
    def __str__(self):
        return self.email
0 Answers
Related