是否有实用程序/模式在Python 2.7中覆盖上下文中的多个全局变量? IE就好像
var1 = someval
var2 = someotherval
with my_context(var1=newval1, var2=newval2,...):
print var1 # prints newval1
答案 0 :(得分:2)
是的,但事实是它unittest.mock.patch
应该告诉你一些关于这个用途的内容:
import unittest.mock
with unittest.mock.patch('module.thing', replacement_thing):
do_whatever()
如果要在同一个调用中修补多个内容,可以使用unittest.mock.patch.multiple
:
from unittest.mock import patch
with patch.multiple(module, thing1=replacement_thing, thing2=other_thing):
# module.thing1 and module.thing2 are now patched
do_whatever()
请确保您要修补的内容不会碰到该函数的参数名称(target
,spec
,create
,spec_set
,{ {1}}或autospec
)。如果他们这样做,请回到常规new_callable
。
如果您想进行非单元测试,可能需要重新考虑您的设计。
如果您使用的是Python 2且patch
不在标准库中,则可以从PyPI下载backport。这个名为unittest.mock
,而不是mock
。