Есть ли способ, чтобы monkeypatch исключение в django contrib, чтобы тесты проходили? - PullRequest
0 голосов
/ 07 октября 2011

Это два приложения в моем списке INSTALLED_APPS, которые вызывают у меня проблему.

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

В частности, один модульный тест выполняет 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 Ответ

1 голос
/ 07 октября 2011

Я раньше не использовал сторож, но чтобы добавить атрибут skip_entry в класс MessageFailure, вы используете mix-in .Добавьте следующий код в модуль, который гарантированно будет работать при запуске сервера Django [любой models.py должен работать]:

from django.contrib.messages.api import MessageFailure
class MessageFailureMixin:
    skip_sentry = True
MessageFailure.__bases__ += (MessageFailureMixin,)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...