单元测试中的模拟python装饰器
我正在尝试测试一个经过修饰的函数。当decorator已经应用时,有没有一种方法可以单独模拟decorator和测试函数单元测试中的模拟python装饰器,python,unit-testing,testing,mocking,decorator,Python,Unit Testing,Testing,Mocking,Decorator,我正在尝试测试一个经过修饰的函数。当decorator已经应用时,有没有一种方法可以单独模拟decorator和测试函数 import mock def decorator(func): def wrapper(*args, **kwargs): return 1 return wrapper def mocked(func): def wrapper(*args, **kwargs): return 2 return wr
import mock
def decorator(func):
def wrapper(*args, **kwargs):
return 1
return wrapper
def mocked(func):
def wrapper(*args, **kwargs):
return 2
return wrapper
@decorator
def f():
return 0
with mock.patch('test.decorator') as d:
d.side_effect = mocked
assert f() == 2 # error
没有简单的解决办法 这是一个类似的问题: 您可以修改原始代码以进行测试,也可以使用类似于以下库的内容:为了编写一个帮助器函数以从原始包装器切换到测试包装器:
from undecorated import undecorated
mocked(undecorated(f))()
我很难理解你来这里的目的。。。您是否正在尝试更改此测试中修饰的
f
函数?是的,我正在尝试用mocked替换decorator。