65

I can't find a way to list the tests which I can call with py.test -k PATTERN

How can I see the list of the available tests?

guettli
  • 25,042
  • 81
  • 346
  • 663

4 Answers4

83

You can also use --collect-only, this will show a tree-like structure of the collected nodes. Usually one can simply -k on the names of the Function nodes.

flub
  • 5,953
  • 27
  • 24
  • 3
    You can also use of -k and --collect-only together. It will collect all the tests which match the expression. – SilentGuy Jan 22 '19 at 17:55
15

You should use the flag --collect-only. If you are using pytest 5.3.0 or newer use --co.

pytest 5.3.0+

pytest --co

previous versions

pytest --collect-only

You can use this flag among other flags, so in your case pytest --co -k PATTERN.

lmiguelvargasf
  • 63,191
  • 45
  • 217
  • 228
7

Both --collect-only and --setup-plan will print out your test files and individual tests.

--collect-only (or --co) prints in a <[type] [name]> format

pytest --collect-only
# or
pytest --co

# <Module test_file.py>
#   <Function test__my_awesome_code_does_the_awesome_thing>

--setup-plan is more verbose and prints the entire test-run plan (including any setup, teardown, and fixtures used for each test). It also prints the entire path for each test.

pytest --setup-plan

# tests/test_file.py
#     SETUP    [...]
#     tests/test_file.py::test__my_awesome_code_does_the_awesome_thing (fixtures used: [...])
#     TEARDOWN [...]
    
2

-v verbose tells you which test cases are run, i.e. which did match your PATTERN.

Zdenek Maxa
  • 1,319
  • 1
  • 10
  • 12