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

如何正确断言Django中的ObjectDoesNotExist异常?

正确断言ObjectDoesNotExist异常的方法

你遇到的问题根源很明确:ObjectDoesNotExist是异常类,而你捕获到的e是这个类的实例,类和实例属于不同的对象类型,直接用self.assertEqual比较肯定会断言失败。

以下是几种正确的断言方式:

  • 断言异常实例的类型
    直接判断捕获到的异常是否是目标类的实例:

    try:
        is_user_login(...)  # 传入触发异常的参数
    except ObjectDoesNotExist as e:
        self.assertIsInstance(e, ObjectDoesNotExist)
    else:
        self.fail("未抛出预期的ObjectDoesNotExist异常")
    
  • 使用上下文管理器(更推荐)
    利用unittest内置的assertRaises上下文管理器,无需手动捕获异常,框架会自动验证:

    with self.assertRaises(ObjectDoesNotExist):
        is_user_login(...)  # 传入触发异常的参数
    
  • 验证异常的附加信息(如消息)
    如果需要同时验证异常的具体内容,可以结合上下文管理器获取异常实例:

    with self.assertRaises(ObjectDoesNotExist) as ctx:
        is_user_login(...)
    # 验证异常消息(根据实际需求调整)
    self.assertEqual(str(ctx.exception), "用户未登录或不存在")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 14:55:54