我有以下单元测试,但无法确定为什么由于检查用户已从page1重定向而导致失败(测试通过是我删除了检查),尽管我无法弄清楚如何使其通过测试仍然在那里。
tests.py
def test_redirects_after_POST(self):
user = User.objects.create_superuser('username')
self.client.force_login(user)
response = self.client.post(
reverse('page1'), data={
'first_name': 'testuser',
'dob': UnitTest.set_age(20)}
)
self.assertRedirects(response, reverse('page2'))
我尝试添加此内容,但无济于事:
referer = 'http://testserver{}'.format(reverse('page1'))
# also tried: referer = 'http://testserver{}'.format(reverse('page2'))
response = self.client.post(
reverse('page1'), data={
'first_name': 'testuser',
'dob': UnitTest.set_age(20)}
, HTTP_REFERER=referer)
views.py
@login_required
@allowed_users(allowed_roles=['admin', 'registered_user'])
def page1(request):
if request.method == 'POST':
form = Page1Form(request.POST, request.FILES, instance=request.user.page1)
if form.is_valid():
form.save()
return redirect('page2')
else:
form = Page1Form(instance=request.user.page1)
context = {
'form' : form,
}
return render(request, 'website/page1.html', context)
@login_required
@allowed_users(allowed_roles=['admin', 'registered_user'])
def page2(request):
if request.method == 'POST':
form = Page2Form(request.POST, request.FILES, instance=request.user.page2)
if form.is_valid():
form.save()
return redirect('page3')
else:
# redirect if user didnt access the page from page1
if(request.META.get('HTTP_REFERER') != request.build_absolute_uri(reverse('page1'))):
return redirect('page1')
else:
form = Page2Form(instance=request.user.page2)
context = {
'form' : form
}
return render(request, 'website/page2.html', context)
错误消息]
AssertionError: 302 != 200 : Couldn't retrieve redirection page '/website/page2/': response code was 302 (expected 200)
谢谢
我有以下单元测试,但无法确定为什么由于检查用户已从page1重定向而失败(测试通过是我删除了该检查),尽管我无法弄清楚如何...
您的请求成功,但是您的测试失败,因为您输入了错误的expectations:
如果您的请求使用了Follow参数,则Expected_url和target_status_code将是重定向链最后一点的url和状态代码。