I can't seem to figure out why my unit test is failing for the following
Traceback (most recent call last): File "/app/core/tests/test_admin.py", line 26, in test_users_listed self.assertContains(res, self.user.name)AttributeError: 'AdminSiteTests' object has no attribute 'user'test_admin.py
from django.test import TestCase, Clientfrom django.contrib.auth import get_user_modelfrom django.urls import reverseclass AdminSiteTests(TestCase): def setup(self): self.client = Client() self.admin_user = get_user_model().objects.create_superuser( email='admin@test.com', password='test123' ) self.client.force_login(self.admin_user) self.user = get_user_model().objects.create_user( email='test@test.com', password='test123', name='test name' ) def test_users_listed(self):"""Test that users are listed on user page""" url = reverse('admin:core_user_changelist') res = self.client.get(url) self.assertContains(res, self.user.name)self.assertContains(res, self.user.email)
admin.py
from django.contrib import adminfrom django.contrib.auth.admin import UserAdmin as BaseUserAdminfrom core import modelsclass UserAdmin(BaseUserAdmin): ordering = ['id'] list_display = ['email', 'name']admin.site.register(models.User, UserAdmin)models.py
from django.db import modelsfrom django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixinclass UserManager(BaseUserManager): def create_user(self, email, password=None, **extra_fields):"""Creates and saves a new user""" if not email: raise ValueError('Users must have a email address') user = self.model(email=self.normalize_email(email), **extra_fields) # Must encrypt password using set_password() that comes with BaseUserManager user.set_password(password) user.save(using=self._db) return user def create_superuser(self, email, password):"""Creates and saves new superuser""" user = self.create_user(email, password) user.is_staff = True user.is_superuser = True user.save(using=self._db) return userclass User(AbstractBaseUser, PermissionsMixin):"""Custom user model that supports using email instead of username""" email = models.EmailField(max_length=255, unique=True) name = models.CharField(max_length=255) is_active = models.BooleanField(default=True) is_staff = models.BooleanField(default=False) objects = UserManager() USERNAME_FIELD = 'email'I am creating the user in the setup function for the rest of my tests but I'm thinking maybe the setup function isn't getting called to create the user?
All other tests are passing. Including a test that checks whether a user has been created. Any help would be apperciated