3
@lolcat_decorator1
@loldog_decorator2
@lolrat_decorator3
def lolanimal(*args, **kwargs):
  ....

我相信我会分别对这些装饰器进行单元测试。但是这些装饰器会先处理传递给的参数lolanimal,然后再lolanimal处理那些修改过的参数(其中一个装饰器可能会插入新的关键字参数**kwargs。)

那么模拟它的最佳方法是什么?

谢谢

4

2 回答 2

4

我的第一个想法是创建一个_lolanimal封装所有实际功能的方法lolanimal,然后只lolanimal_lolanimal. _lolanimal然后,您可以使用您完全控制的数据运行所有测试。

您还可以创建第二个装饰器,它会在第一个装饰器之前读取配置值或某种测试模式的东西,lolspecific如果配置值是 true,它将覆盖装饰器......

于 2012-04-24T17:05:21.770 回答
0

我的第一个想法是你应该将装饰器视为函数实现的一部分,并对“函数”进行单元测试,但希望你不需要将依赖项注入这些装饰器 - 如果你这样做了,那么 Silas Ray 的回答将需要考虑。

于 2013-08-06T07:42:29.780 回答