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

如何在单元测试中屏蔽RemovedInDjango40Warning警告?

解决Django 4.0废弃警告屏蔽失效问题

问题根源

你当前的警告屏蔽代码写在test_all方法内部,但触发警告的时机更早:在django.setup()执行、application.poc和eav.models模块导入时,这些警告就已经输出了,此时你的屏蔽逻辑还未运行,所以无法生效。

有效解决方法

方法一:提前在测试文件顶部屏蔽警告

将屏蔽代码移到测试文件的最开头,确保在任何Django相关模块导入前执行:

import warnings
from django.utils.deprecation import RemovedInDjango40Warning

# 优先设置警告过滤
warnings.simplefilter("ignore", category=RemovedInDjango40Warning)

from unittest import TestCase
import django  # 注意这里应该是小写的django,你之前的代码写错了


class TestPocFunctional(TestCase):
    @classmethod
    def setUpClass(cls):
        django.setup()
        return

    def test_all(self):
        from application.poc import PocFunctional
        
        # ... 测试步骤
        
        return

方法二:全局配置中屏蔽警告

如果希望所有测试和项目运行都屏蔽该警告,直接在项目的settings.py中添加过滤逻辑:

import warnings
from django.utils.deprecation import RemovedInDjango40Warning

warnings.simplefilter('ignore', RemovedInDjango40Warning)

方法三:通过PyCharm运行配置屏蔽

无需修改代码,直接在测试运行配置中添加命令行参数:

  1. 打开PyCharm的Run/Debug Configurations
  2. 找到对应的单元测试配置,在Parameters栏添加:
    -W ignore::django.utils.deprecation.RemovedInDjango40Warning
    
  3. 保存配置后重新运行测试即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 18:39:59