2016-04-23 112 views
0

如何用monkeypatch或pytest.mock修补我的定制装饰器?我设法做(答案this问题)嘲笑它:在python中用模拟和pytest嘲笑装饰器

package.decorator = mytestdecorator

的问题是,它打破了在那里我真正需要的是装饰工作的一些其他测试。

回答

2

您必须控制模拟装饰器的完整生命周期并将装饰器恢复到原始状态。

它可以在几种不同的方式来完成:它建立的嘲笑装饰,并__exit__其恢复

  • 上下文管理。
  • 安装和拆卸功能为您的测试,teardown必须恢复装饰。
  • pytest夹具与终结器
  • pytest夹具与yield的表达。

个人而言,我喜欢@pytest.yield_fixture,因为它使代码短,只要你意识到,所有的后夹具代码yield声明会给出清除代码,事情是很清楚的事。

+0

你能否提供一个例子? –