крепеж крепежа светильников

В настоящее время я пишу тесты для библиотеки среднего размера (~ 300 файлов). Многие классы в этой библиотеке используют одну и ту же схему тестирования, которая была написана с использованием pytest:

Файл test_for_class_a.py:

import pytest

@pytest.fixture()
def setup_resource_1():
    ...

@pytest.fixture()
def setup_resource_2():
    ...

@pytest.fixture()
def setup_class_a(setup_resource_1, setup_resource_2):
    ...

def test_1_for_class_a(setup_class_a):
    ...

def test_2_for_class_a(setup_class_a):
    ...

аналогичные файлы существуют для class_b, class_c и т. д ... Единственное отличие заключается в содержимом setup_resource_1 & setup_resource_2.

Теперь я хотел бы повторно использовать приборы setup_class_a, setup_class_b, setup_class_c, определенные в test_for_class_a.py, test_for_class_b.py и test_for_class_c.py, для запуска на них тестов.

В файле test_all_class.py это работает, но оно ограничено одним прибором на тест:

from test_for_class_a import *

@pytest.mark.usefixtures('setup_class_a')      # Fixture was defined in test_for_class_a.py
def test_some_things_on_class_a(request)
    ...

Но я ищу способ сделать что-то более общее:

from test_for_class_a import *
from test_for_class_b import *   # I can make sure I have no collision here 
from test_for_class_c import *   # I can make sure I have no collision here 

==> @generate_test_for_fixture('setup_class_a', 'setup_class_b', 'setup_class_c') 
def test_some_things_on_all_classes(request)
    ...

Есть ли способ сделать что-то близкое к этому? Я смотрел на фабрики фабрик и фабрики абстрактных pytest, но я борюсь с тем, как pytest определяет фикстуру. Есть ли способ решить эту проблему?

Ответы на вопрос(2)

Ваш ответ на вопрос