【发布时间】:2016-08-17 04:57:21
【问题描述】:
如何使用 monkeypatch 或 pytest.mock 修补我的自定义装饰器?我设法通过这样做来模拟它(回答this问题):
package.decorator = mytestdecorator
问题是它破坏了我实际需要该装饰器工作的其他一些测试。
【问题讨论】:
标签: python testing mocking decorator pytest
如何使用 monkeypatch 或 pytest.mock 修补我的自定义装饰器?我设法通过这样做来模拟它(回答this问题):
package.decorator = mytestdecorator
问题是它破坏了我实际需要该装饰器工作的其他一些测试。
【问题讨论】:
标签: python testing mocking decorator pytest
您必须控制模拟装饰器的完整生命周期并将装饰器恢复到原始状态。
可以通过几种不同的方式完成:
__exit__ 将其还原。teardown 必须还原装饰器。pytest 带有终结器的夹具yield 表达式的pytest 夹具。我个人喜欢@pytest.yield_fixture,因为它使代码保持简短,并且一旦您意识到夹具代码中yield 语句之后的所有内容都是清理代码,事情就很清楚了。
【讨论】: