如何在单元测试中模拟一个有decorator应用于它的函数?

2024-09-30 22:24:41 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我确信我会单独对这些装饰器进行单元测试。但是这些修饰符将首先对传递给lolanimal的参数执行操作,然后lolanimal将对这些修改后的参数执行操作(其中一个修饰符可能会向**kwargs插入新的关键字参数)

那么,嘲笑它的最好方法是什么呢?在

谢谢


Tags: 参数defargs装饰单元测试修饰符kwargs我会
2条回答

我的第一个想法是,您应该将decorator视为函数实现的一部分,并对“function”进行单元测试,希望您不需要将依赖项注入到这些decorator中—如果这样做了,那么需要考虑Silas Ray的答案。在

我的第一个想法是创建一个_lolanimal方法,它封装了lolanimal的所有实际功能,然后让lolanimal成为{}的传递包装器。然后您就可以使用您完全控制的数据对_lolanimal运行所有测试。在

您还可以创建第二个decorator,该decorator位于第一个decorator之前,该decorator将读取配置值,或者用于某种测试模式,如果config值为true,它将覆盖lolspecific装饰器。。。在

相关问题 更多 >