Как написать 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 не будет делать это за вас.