是否有一种方法可以monkeypatch django contrib异常以使测试通过?



这是我的INSTALLED_APPS列表中的两个应用程序,这给了我一个问题。

  1. django.contrib.messages
  2. sentry.client

一个单元测试是做一个assertRaises期望一个django.contrib.messages.api.MessageFailure

sentry.client安装一个监听get -request-exception的信号处理程序。在测试执行期间,信号处理程序试图将异常记录到哨兵&这是哨兵的原因。客户端失败的HTTP Error 400: BAD REQUEST。哨兵代码说,如果异常类型拥有属性' ',它将避免记录日志。

我可以在哪里monkeypatch django.contrib.messages.api.MessageFailure像这样:

MessageFailure.skip_sentry = True

我以前没有使用sentry,但是要将skip_entry属性添加到MessageFailure类中,您可以使用mix-in。在Django服务器启动时保证运行的模块中添加以下代码[any models.py should work]:

from django.contrib.messages.api import MessageFailure
class MessageFailureMixin:
    skip_sentry = True
MessageFailure.__bases__ += (MessageFailureMixin,)