Как также игнорировать предупреждения в pytest об удалении в Django41?

https://docs.pytest.org/en/6.2.x/warnings.html#deprecationwarning-and-pendingdeprecationwarning учит меня использовать это в моем pytest.ini

filterwarnings = ignore:.*U.*mode is deprecated:DeprecationWarning

но я все еще получаю предупреждения следующего содержания:

../usr/local/lib/python3.8/dist-packages/django/apps/registry.py:91
  /usr/local/lib/python3.8/dist-packages/django/apps/registry.py:91: RemovedInDjango41Warning: 'pattern_library' defines default_app_config = 'pattern_library.apps.PatternLibraryAppConfig'. Django now detects this configuration automatically. You can remove default_app_config.
    app_config = AppConfig.create(entry)

Я бы хотел подавить и это, поскольку это также сторонняя библиотека, которую я не контролирую, хотя я уже подал PR для ее обновления.

Что нужно добавить в pytest.ini?

Вы можете зарегистрировать фильтры на полный путь импорта для данного класса предупреждения; здесь это django.utils.deprecation.RemovedInDjango41Warning:

filterwarnings =
    ignore:.*U.*mode is deprecated:DeprecationWarning
    ignore:.*Django now detects this configuration.*:django.utils.deprecation.RemovedInDjango41Warning

В зависимости от версии вашего Django, RemovedInDjango41Warning является подклассом либо DeprecationWarning (Django 4.0, все еще в разработке), либо PendingDeprecationWarning (Django 3.2), и что фильтры предупреждений также подбираются по подклассу, поэтому:

ignore:.*Django now detects this configuration.*:PendingDeprecationWarning
ignore:.*Django now detects this configuration.*:DeprecationWarning

тоже будет работать, как для Django 3.2, так и для 4.0.

Вернуться на верх