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

Django单元测试中UserGroup对象删除未按预期生效问题求助

问题排查思路
  • 优先检查分组测试类的登录逻辑
    对比两个测试类的setUp方法可以发现,TestAdmUsers中执行了self.client.force_login(self.user_staff.user)登录操作,但TestAdmGroups中没有这行代码。删除视图配置了@user_passes_test权限校验装饰器,未登录状态下请求会直接被重定向到登录页,返回的状态码同样是302,刚好匹配你的测试断言,但实际删除逻辑完全没有执行,所以分组记录没有被删除,最终抛出DoesNotExist not raised的错误。你可以先在TestAdmGroups的setUp方法末尾补充登录代码后重试,这是概率最高的故障点。
  • 验证路由参数匹配规则
    确认polls:adm_delete_group对应的路由定义,检查参数的顺序、类型是否和你reverse传入的参数一致。如果路由中分组ID的位置、参数名不匹配,会导致视图拿到的grp_id是错误值,找不到对应分组也就不会执行删除操作。
  • 排查分组删除的拦截逻辑
    可以在删除视图的delete()执行前后,打印UserGroup.objects.filter(id=grp_id).exists()的返回值,确认删除操作是否真的触发。另外你的UserGroup模型存在hidden字段,需要排查是否有自定义delete方法、ORM信号接收器拦截了物理删除操作,改为仅修改hidden字段的软删除逻辑。
  • 校验操作账号的权限
    确认测试用的user_staff账号是否属于当前测试公司的管理员,避免因权限校验不通过,导致视图未执行删除就直接返回重定向。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:15:04