Untitled
from typing import Callable from abc import ABC import pytest from pprint import pprint class TestDoc(ABC): @classmethod def collect_subclasses(cls) -> list['TestDoc']: """Collect all Test Documentation classes recursively""" subclasses = [] for subclass in cls.__subclasses__(): subclasses.append(subclass) subclasses.extend(subclass.collect_subclasses()) return subclasses @classmethod def extract_markering(cls) -> list[Callable[[pytest.Item], None]]: pytest_marks = getattr(cls, 'pytestmark') markering: list[Callable[[pytest.Item], None]] = [] for mark in pytest_marks: markering.append(lambda item: item.add_marker(mark.name)) if hasattr(cls, '__allure_display_name__'): markering.append(lambda item: setattr(item, '__allure_display_name__', getattr(cls, '__allure_display_name__'))) return markering
Leave a Comment