How to show warnings in py.test
Asked Answered
S

1

41

I just ran py.test on my code and got the following output:

================== 6 passed, 2 pytest-warnings in 40.79 seconds =======================

However, I cannot see what py.test would like to warn me about. How can I turn on warning output to the console?

py.test --help offers me the --strict flag:

--strict run pytest in strict mode, warnings become errors.

However I just want to see the output, not make my tests fail.

I checked pytest.org and this question but they are only concerned with asserting warnings in python, not showing warnings generated on the commandline.

Sheritasherj answered 27/10, 2015 at 8:53 Comment(0)
R
38

In this case, pytest-warnings are warnings which were generated for pytest and/or it's plugins. These warnings were not generated for your code. In order to list them in the report, you will need to use option -r w. Here is portion of py.test --help:

-r chars              show extra test summary info as specified by chars (f)ailed,
                      (E)error, (s)skipped, (x)failed, (X)passed
                      (w)pytest-warnings (a)all.

This will allow to show warnings in the report (top portion of the record) will list which pytest plugins use deprecated arguments (in my case bellow):

...
================================ pytest-warning summary ================================ 
WI1 /Projects/.tox/py27/lib/python2.7/site-packages/pytest_timeout.py:68 'pytest_runtest_protocol' hook uses deprecated __multicall__ argument
WI1 /Projects/.tox/py27/lib/python2.7/site-packages/pytest_capturelog.py:171 'pytest_runtest_makereport' hook uses deprecated __multicall__ argument
...
Reunite answered 27/10, 2015 at 14:11 Comment(1)
Actually it's not true, that those are always warnings, which are not generated for ones code. I had an example, where I added an __init__ constructor to my test class, which caused py.test not to be able to use the test. The warning was not shown to me, even with --strict, but your answer helped me to make py.test show the warning, of which the cause was still in my own code.Sargassum

© 2022 - 2024 — McMap. All rights reserved.