@lolcat_decorator1
@loldog_decorator2
@lolrat_decorator3
def lolanimal(*args, **kwargs):
....
我相信我会分别对这些装饰器进行单元测试。但是这些装饰器会先处理传递给的参数lolanimal
,然后再lolanimal
处理那些修改过的参数(其中一个装饰器可能会插入新的关键字参数**kwargs
。)
那么模拟它的最佳方法是什么?
谢谢
@lolcat_decorator1
@loldog_decorator2
@lolrat_decorator3
def lolanimal(*args, **kwargs):
....
我相信我会分别对这些装饰器进行单元测试。但是这些装饰器会先处理传递给的参数lolanimal
,然后再lolanimal
处理那些修改过的参数(其中一个装饰器可能会插入新的关键字参数**kwargs
。)
那么模拟它的最佳方法是什么?
谢谢
我的第一个想法是创建一个_lolanimal
封装所有实际功能的方法lolanimal
,然后只lolanimal
在_lolanimal
. _lolanimal
然后,您可以使用您完全控制的数据运行所有测试。
您还可以创建第二个装饰器,它会在第一个装饰器之前读取配置值或某种测试模式的东西,lolspecific
如果配置值是 true,它将覆盖装饰器......
我的第一个想法是你应该将装饰器视为函数实现的一部分,并对“函数”进行单元测试,但希望你不需要将依赖项注入这些装饰器 - 如果你这样做了,那么 Silas Ray 的回答将需要考虑。