【问题标题】:Force_authenticate superuser django rest unit testingforce_authenticate 超级用户 django rest 单元测试
【发布时间】:2021-04-21 14:10:19
【问题描述】:

我已经构建了我的 api,以便只有超级用户可以删除帐户。我试图在我的单元测试中强制验证超级用户,但我遇到了问题。

单元测试:

class PrivateUserApiTests(TestCase):
  """Test the users API (private)"""

  def setUp(self):
    self.user = create_user(
      email='tes111t@test.com',
      password='test123',
      name='name',
    )
    self.user.is_superuser = True
    self.client = APIClient()
    self.client.force_authenticate(user=self.user)

  def test_user_successful_delete(self):
    """Test that user was succesfully deleted"""
    payload = {'email': 'test@test123.com', 'password': 'test123'}
    user = create_user(**payload)
    res = self.client.delete(reverse('user:delete_user', kwargs={'pk': user.id}))

    self.assertEqual(res.status_code, status.HTTP_204_NO_CONTENT)

错误:

Traceback (most recent call last):
  File "/app/user/tests/test_user_api.py", line 152, in test_user_successful_delete
    self.assertEqual(res.status_code, status.HTTP_204_NO_CONTENT)
AssertionError: 403 != 204

我使用force_authenticate() 方法是不是错了?如何创建超级用户

【问题讨论】:

    标签: python django unit-testing django-rest-framework


    【解决方案1】:

    用户实例需要保存到数据库中:

    self.user.is_superuser = True
    self.user.save(update_fields=["is_superuser"])
    

    【讨论】:

      猜你喜欢
      • 2018-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-12
      • 2015-05-12
      • 1970-01-01
      • 2022-07-26
      相关资源
      最近更新 更多