Skip to content

Warning integration breaks warnings.filterwarnings #2430

@zzzeek

Description

@zzzeek

SQLAlchemy CI is now broken due to the unconditional inclusion of pytest-warnings in py.test 3.1.0. I need at least to know how to disable this plugin entirely.

In our test suite we make use of the warnings filter internally in order to propagate our own warnings to errors. It seems like warnings.filter() is now non-functional when this plugin is installed.

Demo test case:

import warnings class MyWarning(Warning): pass warnings.filterwarnings("error", category=MyWarning) class TestWarnings(object): def test_my_warning(self): try: warnings.warn(MyWarning("warn!")) assert False except MyWarning: assert True 

with py.test 3.0.7:

 $ py.test test_warning.py ======================================================== test session starts ======================================================== platform linux2 -- Python 2.7.13, pytest-3.0.7, py-1.4.33, pluggy-0.4.0 rootdir: /home/classic/Desktop/tmp, inifile: plugins: xdist-1.15.0, cov-2.4.0 collected 1 items test_warning.py . ===================================================== 1 passed in 0.01 seconds ====================================================== 

with py.test 3.1.0:

$ py.test test_warning.py ======================================================== test session starts ======================================================== platform linux2 -- Python 2.7.13, pytest-3.1.0, py-1.4.33, pluggy-0.4.0 rootdir: /home/classic/Desktop/tmp, inifile: plugins: xdist-1.15.0, cov-2.4.0 collected 1 items test_warning.py F ============================================================= FAILURES ============================================================== ___________________________________________________ TestWarnings.test_my_warning ____________________________________________________ self = <test_warning.TestWarnings object at 0x7fecb08a5290> def test_my_warning(self): try: warnings.warn(MyWarning("warn!")) > assert False E assert False test_warning.py:12: AssertionError ========================================================= warnings summary ========================================================== test_warning.py::TestWarnings::()::test_my_warning /home/classic/Desktop/tmp/test_warning.py:11: MyWarning: warn! warnings.warn(MyWarning("warn!")) -- Docs: http://doc.pytest.org/en/latest/warnings.html =============================================== 1 failed, 1 warnings in 0.03 seconds ================================================ 

I have tried everything I can think of with the new -W flag, disable-warnings, no luck.

Please advise on the correct options to allow Python stdlib warnings.filter() to work again, thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    plugin: warningsrelated to the warnings builtin plugintype: bugproblem that needs to be addressedtype: regressionindicates a problem that was introduced in a release which was working previously

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions