IF语句导致单元测试失败,但我不知道为什么

问题描述 投票:0回答:1

我有以下单元测试,但无法确定为什么由于检查用户已从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重定向而失败(测试通过是我删除了该检查),尽管我无法弄清楚如何...

python django selenium django-testing django-tests
1个回答
3
投票

您的请求成功,但是您的测试失败,因为您输入了错误的expectations

如果您的请求使用了Follow参数,则Expected_url和target_status_code将是重定向链最后一点的url和状态代码。

© www.soinside.com 2019 - 2024. All rights reserved.