无法获取 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')
我正在尝试在 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')