Quantcast
Channel: Active questions tagged python - Stack Overflow
Viewing all articles
Browse latest Browse all 23189

'AdminSiteTests' object has no attribute 'user' Django unit tests

$
0
0

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


Viewing all articles
Browse latest Browse all 23189

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>