крепеж крепежа светильников
В настоящее время я пишу тесты для библиотеки среднего размера (~ 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 определяет фикстуру. Есть ли способ решить эту проблему?