有没有办法monkeypatch django contrib异常,以便测试将通过?

时间:2011-10-07 07:31:12

标签: django

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

  1. django.contrib.messages
  2. sentry.client
  3. 特别是一个单元测试是assertRaises期待django.contrib.messages.api.MessageFailure

    sentry.client安装一个侦听got-request-exception的信号处理程序。 在测试执行期间,信号处理程序尝试将异常记录到sentry&这会导致sentry.client失败并显示HTTP Error 400: BAD REQUEST。如果异常类型具有属性``。

    ,则哨兵代码表示它将避免记录

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

    MessageFailure.skip_sentry = True
    

    显然我不想改变django测试源。

1 个答案:

答案 0 :(得分:1)

之前我没有使用过哨兵,但是为skip_entry课程添加了MessageFailure属性,你使用的是mix-in。在Django服务器启动时保证运行的模块中添加以下代码[任何models.py应该工作]:

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