У меня есть менеджер контекста, который требуется для нескольких тестов. Вместо того чтобы писать блок with
внутри каждого теста, я подумал, что было бы лучше создать фиксатор из этого диспетчера контекста и украсить тест с помощью @pytest.mark.usefixtures("my_fixture")
.
. Я мог бы переопределить диспетчер контекста как приспособление, но это похоже на дублирование кода. Поэтому я хотел бы сослаться на оригинальный менеджер контекста в новом приборе.
Вот что у меня есть:
import my_context_manager
@pytest.fixture
def my_fixture(arg1, arg2):
with my_context_manager(arg1, arg2) as c:
yield c
Это подходящий способ преобразовать существующий менеджер контекста в приспособление?
Я должен отметить, что мне известен contextlib.ContextDecorator
для написания менеджера контекста, который можно использовать в качестве декоратора. Но мой менеджер контекста требует аргументов, и они не распознаются, когда они находятся в выражении типа @my_context_decorator(arg1, arg2)
.