我有成对的固定装置,特别是一个给我一个上下文管理器功能的夹具,另一个直接进入那个上下文的夹具:
import pytest
from contextlib import contextmanager
@pytest.fixture
def create_context():
@contextmanager
def context():
ctx = {
'active': True,
}
yield ctx
ctx['active'] = False
return context
@pytest.fixture
def context(create_context):
with create_context() as ctx:
yield ctx
def test_using_create_context(create_context):
with create_context() as context:
assert context['active']
assert not context['active']
def test_using_context(context):
assert context['active']
context
固定装置还不够context
我有create_foo_context
/ foo_context
对中的多个灯具,而后者总是取决于前者,即需要一个名为create_foo_context
的参数。
我想要做的是这样的事情:
context = context_fixture(create_context)
而不是编写第二个固定装置或类似的东西。 This blog post展示了如何动态创建灯具,但它们都仅取决于静态已知的灯具。
因此,如何编写我的context_fixture
函数,以便生成的灯具依赖于具有任意名称的灯具?