using pytest --collect-only to only return individual test names
Asked Answered
E

1

22

I am trying to sort out how to get a list of just the test names from a test file using pytest I have made it this far:

$ pytest --collect-only my_test_file.py
============================================================================================= test session starts ==============================================================================================
platform darwin -- Python 3.6.4, pytest-3.2.5, py-1.5.2, pluggy-0.4.0
rootdir: /Users/.../automation, inifile:
plugins: xdist-1.20.1, metadata-1.7.0, html-1.17.0, forked-0.2, cloud-2.0.0
collected 6 items
<Module 'my_test_file.py'>
  <UnitTestCase 'TestFile'>
    <TestCaseFunction 'test_general'>
    <TestCaseFunction 'test_search_0'>
    <TestCaseFunction 'test_search_1'>
    <TestCaseFunction 'test_search_2'>
    <TestCaseFunction 'test_search_3'>
    <TestCaseFunction 'test_search_4'>

While this is a good start it is too much information. What should I be passing to just get back a list of the test names themselves?

Edytheee answered 6/6, 2018 at 19:43 Comment(2)
-s should make output more concise, I think... but you are not executing... perhaps no effectImpalpable
@EPo, -s is used to avoid capturing the output, so for example, print statements will be shown in the console. Thus, this is not a solution.Archiphoneme
T
36

Use --quiet to change the collection output.

$ pytest --collect-only -q
test_eggs.py::test_bacon[1]
test_eggs.py::test_bacon[2]
test_eggs.py::test_bacon[3]
test_spam.py::test_foo
test_spam.py::test_bar

no tests ran in 0.03 seconds

You can strip the status line with

$ pytest --collect-only -q | head -n -2

When used twice (or more), --quiet will print the amount of tests per module:

$ pytest --collect-only -qq
test_eggs.py: 3
test_spam.py: 2
Topmast answered 6/6, 2018 at 21:36 Comment(2)
Correct answer, although this is so strange and a design flaw in pytest I think. Why should I supply --quiet to be able to list the full name of my tests - it makes no sense.Lias
I believe --verbose will also do this for you.Iffy

© 2022 - 2024 — McMap. All rights reserved.