将现有上下文管理器重新用作pytest固定装置

问题描述 投票:3回答:1

我有一个现有的上下文管理器,它需要进行多个测试。我认为与其在每个测试中编写一个with块,不如从该上下文管理器中制作一个固定装置,并用@pytest.mark.usefixtures("my_fixture")装饰该测试会更好。

我可以将上下文管理器重新实现为一种固定装置,但这似乎是在重复代码。因此,我想在新的固定装置中引用原始的上下文管理器。

这是我所拥有的:

import my_context_manager


def my_fixture(arg1, arg2):

    with my_context_manager(arg1, arg2) as c:
        yield c

这是将现有上下文管理器转换为固定装置的适当方法吗?

[我应该提一下,我知道contextlib.ContextDecorator用于编写可用作装饰器的上下文管理器。但是我的上下文管理器需要参数,并且它们在@my_context_decorator(arg1, arg2)之类的语句中时不会被识别。

我有一个现有的上下文管理器,它需要进行多个测试。与其在每个测试中编写一个with块,不如在此上下文管理器中制作一个固定装置会更好,并且...

python pytest fixtures contextmanager
1个回答
0
投票

创建了一个简单的上下文管理器,将其用作固定装置,并在测试中调用了该固定装置。

createcontextmanager.py

© www.soinside.com 2019 - 2024. All rights reserved.