import os import sys import pytest TESTS_PATH = os.path.join( os.path.dirname(os.path.realpath(__file__)), 'tests' ) class CollectTestFunctionNames: """See https://github.com/pytest-dev/pytest/issues/2039#issuecomment-257753269""" def __init__(self): self.collected = [] def pytest_collection_modifyitems(self, items): for item in items: self.collected.append(item.nodeid) collector = CollectTestFunctionNames() rv = pytest.main(['--collect-only', TESTS_PATH], plugins=[collector]) if rv == pytest.ExitCode.INTERRUPTED: print("Failed to collect all tests, perhaps there is a syntax error in one of test files?") sys.exit(1) print('Listing collected tests:') for nodeid in collector.collected: print('Test:', nodeid) # easy way to exit GDB session sys.exit(0)