Django Test User Login With Factory And setUpClass

Я пытаюсь протестировать вход пользователя с помощью setUpClass, но учетные данные сохраненного пользователя не принимаются (403) при аутентификации, хотя это работает, если я регистрирую пользователя вручную (но я хотел опустить это для всех функций, чтобы не делать этого, поэтому я искал setUpclass())

Я что-то упускаю? test_register() работает просто отлично.

class AuthenticationTest(APITestCase):

    @classmethod
    def setUpClass(cls):
        super(AuthenticationTest, cls).setUpClass()
        cls.user_object = UserFactory.build()
        cls.user_saved = UserFactory.create()
        cls.client = APIClient()
        cls.base_url_login = reverse("api:login-list")
        cls.base_url_register = reverse("api:register-list")
        cls.base_url_logout = reverse("api:logout-list")
        cls.base_url_check_session = reverse("api:check-session-list")
        cls.faker_obj = Faker()

    def test_register(self):
        # Prepare data
        signup_dict = {
            'username': self.user_object.username,
            'password': 'test_Pass',
            'email': self.user_object.email,
        }

        # Make request
        response = self.client.post(
            self.base_url_register, signup_dict
        )

        # Check status response
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        response_data = response.json()
        self.assertEqual(response_data["success"], True)
        self.assertEqual(User.objects.count(), 2)

        # Check database
        new_user = User.objects.get(username=self.user_object.username)
        self.assertEqual(
            new_user.email,
            self.user_object.email,
        )

    def test_login(self):
        # Prepare Data
        login_dict = {
            'password': self.user_saved.password,
            'email': self.user_saved.email,
        }

        # Make request
        response = self.client.post(self.base_url_login, login_dict)

        # Check status response
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        response_data = response.json()
        self.assertEqual(response_data["success"], True)

    ...

class UserFactory(django.DjangoModelFactory):

    class Meta:
        model = User

    username = Faker("user_name")
    email = Faker("email")

    @post_generation
    def password(self, create: bool, extracted: Sequence[Any], **kwargs):
        password = (
            extracted
            if extracted
            else FakerClass().password(
                length=30,
                special_chars=True,
                digits=True,
                upper_case=True,
                lower_case=True,
            )
        )
        self.set_password(password)
Вернуться на верх