Pytest: Warnings not captured during test collection

Created on 22 Feb 2018  路  5Comments  路  Source: pytest-dev/pytest

The warnings docs clearly state that it captures warnings during test execution, but that means any warnings issued during test collection will not be captured and will silently pass. Consider this slight tweak to the canonical example:

$ cat test_show_warnings.py 
import warnings


warnings.warn("foo", UserWarning)


def test_one():
    assert True
$ .tox/python/bin/pytest test_show_warnings.py -s
====================================== test session starts =======================================
platform darwin -- Python 3.7.0b1, pytest-3.4.1, py-1.5.2, pluggy-0.6.0
rootdir: /Users/jaraco/warnings, inifile:
collecting 0 items                                                                               /Users/jaraco/warnings/test_show_warnings.py:4: UserWarning: foo
  warnings.warn("foo", UserWarning)
collected 1 item                                                                                 

test_show_warnings.py .

==================================== 1 passed in 0.00 seconds ====================================
$ .tox/python/bin/pytest test_show_warnings.py   
====================================== test session starts =======================================
platform darwin -- Python 3.7.0b1, pytest-3.4.1, py-1.5.2, pluggy-0.6.0
rootdir: /Users/jaraco/warnings, inifile:
collected 1 item                                                                                 

test_show_warnings.py .                                                                    [100%]

==================================== 1 passed in 0.00 seconds ====================================

Would it be possible for the warnings feature to also be enabled during test collection, such that warnings like these could also be captured and reported and tweaked by the pytest config?

warnings enhancement

Most helpful comment

Closed by #3931

All 5 comments

Hi @jaraco, thanks for writing down this issue, this was a known limitation that was supposed to be registered in an issue already but it seems it got forgotten.

It should be perfectly possible to capture and display warnings during collection, so hopefully this is something that will be tackled in the internal warnings refactoring for 3.5.

I'm interested in seeing this fixed since it hides for example deprecation warnings from attrs. Would this be doable without intimate knowledge of the pytest codebase?

Hi @Lukas0907, unfortunately this needs some internal refactoring to be done correctly; thankfully this is something that we do intend to fix for 3.7. 馃憤

Thanks a lot! Looking forward to 3.7 then. :)

Closed by #3931

Was this page helpful?
0 / 5 - 0 ratings