我有一个正在更改request.user
字段的视图:
def test(request):
request.user.is_provider = False
request.user.save()
print(request.user.is_provider)
return HttpResponse(status=200)
现在我正在测试该功能,并且具有以下测试:
class RoleSwitchTests(TestCase):
def test_switch_to_customer(self):
User = get_user_model()
user = User.objects.create_user(
username='test',
email='test',
password='test',
first_name='test',
last_name='test',
is_provider=True,
is_admin=False,
)
self.client.login(username='test', password='test')
response = self.client.post('/test/', follow=True)
print(user.is_provider)
self.assertEqual(response.status_code, 200)
self.assertFalse(user.is_provider)
self.assertFalse(user.is_provider)
在这里失败。由于某些原因,request.user.is_provider
在False
中为test
,但在test_switch_to_customer
中,user.is_provider
为True
。我知道这些对象指的是同一用户,因为它们具有相同的id
,那么为什么这里不保存修改?
视图和测试正在不同的User
对象上工作,它们都具有相同的主键。因此,在测试的user
中未完成视图所做的更改。
发布后,您应该使用refresh_from_db从数据库重新加载更新的用户