You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django项目测试报错:Assertion Error: 200 != 302 求助

Django测试Assertion Error: 200 != 302 问题排查

这个错误说明你的测试用例预期返回200 OK状态码,但实际请求得到了302重定向,核心是测试逻辑和视图行为不匹配,常见原因及排查方向如下:

1. 视图包含未预期的重定向逻辑

检查views.py中对应视图是否存在触发重定向的条件,比如:

  • 用户未登录时的权限拦截(如login_required装饰器)
  • 表单提交后的redirect()跳转
  • 条件分支下的跳转逻辑

示例:如果视图用了登录验证:

# views.py
from django.contrib.auth.decorators import login_required
from django.shortcuts import render

@login_required
def protected_view(request):
    return render(request, 'protected.html')

未登录时访问该视图会自动重定向到登录页,返回302。

2. 测试用例的请求方式或上下文不符

  • 请求方式错误:比如视图仅在POST请求时处理逻辑并重定向,但测试用了GET请求;或者反过来,测试用POST但预期200,实际视图处理后重定向。
  • 未模拟登录/权限上下文:如果视图需要登录用户,测试中未创建并登录用户,会触发重定向。

修正示例(模拟登录):

# tests.py
from django.test import TestCase
from django.contrib.auth.models import User

class ProtectedViewTest(TestCase):
    def test_protected_view(self):
        # 创建测试用户并登录
        user = User.objects.create_user(username='test', password='123456')
        self.client.login(username='test', password='123456')
        
        response = self.client.get('/protected/')
        self.assertEqual(response.status_code, 200)

3. URL配置匹配错误

检查项目的URL配置,确保测试请求的URL没有匹配到其他带重定向的视图(比如URL顺序问题,通用规则优先匹配了重定向视图)。

4. 中间件影响

检查项目settings.py中的MIDDLEWARE配置,是否有中间件会对特定请求进行重定向(比如强制HTTPS的中间件、语言重定向中间件等)。

请提供你的tests.py和views.py具体代码,以便更精准定位问题。

内容的提问来源于stack exchange,提问作者MickKav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 05:22:10