How to I display why some tests where skipped while using py.test?

Solution 1:

When you run py.test, you can pass -rsx to report skipped tests.

From py.test --help:

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

Also see this part of the documentation about skipping: http://doc.pytest.org/en/latest/skipping.html

Solution 2:

Short answer:

pytest -rs

This will show extra information of skipped tests.

Detailed answer:

To complement @ToddWilson's answer, the following chars have been added: p and P (2.9.0), a (4.1.0) and A (4.5.0). The detailed information about skipped and xfailed tests is not shown by default in order to avoid cluttering the output. You can use the -r flag among with the following chars:

  • (f)ailed
  • (E)rror
  • (s)kipped
  • (x)failed
  • (X)passed
  • (p)assed
  • (P)assed with output
  • (a)ll except passed (p/P)
  • (A)ll.

Warnings are enabled by default, and the default value is fE.