List available tests with py.test

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.


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 [...]
    

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.


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