无法获取 POST 单元测试以更新数据工作

Cant Get POST Unit Test To Update Data Working

我正在尝试在 Selenium 中进行单元测试,以检查我的 POST 在我的用户个人资料页面上是否正常工作(用户能够更新他们的个人资料信息)。我的问题是我无法让它工作(我无法进行单元测试来更新用户电子邮件)- 我已经尝试了很多方法但无法正确处理。

这个测试returns: AssertionError: 'user@example.com' != 'update@example.com'

views.py

@login_required
def update_profile(request):

    if request.method == 'POST':
        u_form = UserUpdateForm(request.POST, instance=request.user)
        p_form = ProfileUpdateForm(request.POST, request.FILES, instance=request.user.profile)
        if u_form.is_valid() and p_form.is_valid():
           u_form.save()
           p_form.save()
           messages.success(request, f'Your account has been updated')
           return redirect('update_profile')
    else:
        u_form = UserUpdateForm(instance=request.user)
        p_form = ProfileUpdateForm(instance=request.user.profile)

    context = {
        'u_form' : u_form,
        'p_form' : p_form
    }

    return render(request, 'users/update_profile.html', context)

form.py

class UserUpdateForm(forms.ModelForm):
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ['username', 'email']

test.py

def test_update_works(self):
        user = User.objects.create(username='testuser', email='user@example.com')
        self.client.force_login(user)
        self.client.post('/profile/update_profile',{'email': 'updated@example.com'},)
        self.assertEqual(user.email, 'updated@example.com')

谢谢。

在更新完成之前,您的内存中有旧用户信息。您需要从数据库中"refresh"您的用户信息,然后检查新邮件。

def test_update_works(self):
    user = User.objects.create(username='testuser', email='user@example.com')
    self.client.force_login(user)
    self.client.post('/profile/update_profile',{'email': 'updated@example.com'},)
    user.refresh_from_db() # here you get the latest info
    self.assertEqual(user.email, 'updated@example.com')