Как написать setUpClass() и tearDownClass() для создания и регистрации пользователя? (Django Rest FrameWork)

У меня есть этот тестовый пример, написанный для двух моделей с локальными классами permission_classes, [IsAdminUser] и [IsAuthenticated] соответственно. После выполнения тестовых примеров оба теста провалились, и по сообщениям об исключениях ясно, что пользователь не вошел в систему.

class PermissionClassesTest(APITestCase):
    
    @classmethod
    def setUpClass(cls):
        super(PermissionClassesTest, cls).setUpClass()
        print('running before tests')
        cls.user = User.objects.create_user(username='admin', password='qwefghbnm', is_staff= True)
        cls.client = APIClient()
        cls.client.login(username=cls.user.username, password='qwefghbnm')

    @classmethod
    def tearDownClass(cls):
        super(PermissionClassesTest,cls).tearDownClass()
        print('running after test')
        
    def test_SalaryDetail_local_permission(self):
        response = self.client.get('/salaryDetails/')
        self.assertEqual(json.dumps(response.data), '{"detail": "You do not have permission to perform this action."}')

    def test_EmployeeDetail_local_permission(self):
        response = self.client.get('/employeeDetails/')
        self.assertTrue(status.is_success(response.status_code))```

Django по умолчанию установит self.client на экземпляр django.test.client.Client. Вы должны сделать свой клиент доступным под другим именем, например, cls.api_client = APIClient(). Обратите внимание, что если вы устанавливаете данные в setUpClass(), вы также ответственны за их удаление в tearDownClass(), например, удалите созданного вами пользователя, так как Django не будет делать это за вас.

Вернуться на верх