【发布时间】:2020-02-24 17:02:20
【问题描述】:
我有多个测试所需的现有上下文管理器。与其在每个测试中编写 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) 这样的语句中时,它们无法识别。
【问题讨论】:
-
我认为这是目前唯一可用的选项。我有我的实现相同的发布它作为答案,因为发布代码作为评论会搞砸。如果你不喜欢它,请忽略它。
标签: python pytest fixtures contextmanager