【发布时间】:2015-12-21 04:16:28
【问题描述】:
我正在尝试编写一个装饰器,它会根据 kwargs 执行一些操作,同时我想保留函数签名。
这是我要通过的单元测试:
def test_test_deprecator(self):
@test_deprecator("here is decorator message", 'z'):
def some_method(x, y, z):
return x + y
self.assertEqual(some_method(2, 2, z=6), 4)
# test the original function's signature
argspec = inspect.getargspec(some_method)
self.assertEqual(argspec.args, ["x", "y", "z"])
我写了类似的东西:
import decorator
def test_decorator(message, args_name):
@decorator.decorator
def _test_docorator(f, *args, **kwargs):
if args_name in kwargs:
print(message)
return f(*args, **kwargs)
return _test_docorator
单元测试可以通过,但是没有输出信息,因为kwargs一直是空的。
有谁知道如何做到这一点?
【问题讨论】: