Как с помощью unittest Python проверить, что было выдано предупреждение?

В файле просмотра GSP вы можете использовать как таковой.

<g:link url="${request.getHeader('referer')}"> Back </g:link>
54
задан jpyams 18 December 2018 в 13:49
поделиться

1 ответ

Одна проблема с эти warnings.catch_warnings подход состоит в том, что предупреждения, произведенные в различных тестах, могут взаимодействовать странными способами через глобальное состояние, сохраненное в __warningregistry__ атрибуты.

Для обращения к этому мы должны очиститься __warningregistry__ атрибут каждого модуля перед каждым тестом, который проверяет предупреждения.

class MyTest(unittest.TestCase):

  def setUp(self):
    # The __warningregistry__'s need to be in a pristine state for tests
    # to work properly.
    for v in sys.modules.values():
      if getattr(v, '__warningregistry__', None):
        v.__warningregistry__ = {}

  def test_something(self):
    with warnings.catch_warnings(record=True) as w:
      warnings.simplefilter("always", MySpecialWarning)
      ...
      self.assertEqual(len(w), 1)
      self.assertIsInstance(w[0].message, MySpecialWarning)

Это - то, как метод Python 3 assertWarns() , реализовал .

0
ответ дан 7 November 2019 в 07:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: