我正在尝试在Selenium中进行单元测试,以检查我的POST是否可以在我的用户个人资料页面上运行(用户可以更新其个人资料信息)。我的问题是我无法使它正常工作(我无法获得用于更新用户电子邮件的单元测试)-我尝试了很多事情,但无法正确完成。
此测试返回:AssertionError:'[email protected]'!='[email protected]'
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='[email protected]')
self.client.force_login(user)
self.client.post('/profile/update_profile',{'email': '[email protected]'},)
self.assertEqual(user.email, '[email protected]')
谢谢。
在完成更新之前,您的旧用户信息已存储在内存中。您需要从数据库中“刷新”您的用户信息,然后对照新电子邮件进行检查。
def test_update_works(self):
user = User.objects.create(username='testuser', email='[email protected]')
self.client.force_login(user)
self.client.post('/profile/update_profile',{'email': '[email protected]'},)
user.refresh_from_db() # here you get the latest info
self.assertEqual(user.email, '[email protected]')