Untitled

 avatar
unknown
python
2 months ago
945 B
1
Indexable
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