Python2.7 contextlib.ExitStack equivalent

你离开我真会死。 提交于 2019-11-30 09:11:12

问题


To programmatically combine context managers I use the following code:

== helpers.py ==

from contextlib import nested
import mock

def multiple_patch(obj_to_be_patch, *methods):
    return nested(
        *[mock.patch.object(obj_to_be_patch, method) for method in methods]
    )

== tests.py ==

def test_foo(self):
    with helpers.multiple_patch(Foo, "method1", "method2", "method3",    "method3") as mocks:
         mock_method1 = mocks[0]
         ....
         # asserts on mocks

Because I'm stuck with this version of python I can't use contextlib.ExitStack and contextlib.nested is deprecated.

Thanks


回答1:


Check out contextlib2.ExitStack, a backport of Python3's contextlib.ExitStack.



来源:https://stackoverflow.com/questions/34630393/python2-7-contextlib-exitstack-equivalent

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!