【问题标题】:Mocking decorators in python with mock and pytest使用 mock 和 pytest 在 python 中模拟装饰器
【发布时间】:2016-08-17 04:57:21
【问题描述】:

如何使用 monkeypatch 或 pytest.mock 修补我的自定义装饰器?我设法通过这样做来模拟它(回答this问题):

package.decorator = mytestdecorator

问题是它破坏了我实际需要该装饰器工作的其他一些测试。

【问题讨论】:

    标签: python testing mocking decorator pytest


    【解决方案1】:

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

    可以通过几种不同的方式完成:

    • 构建模拟装饰器的上下文管理器,并通过__exit__ 将其还原。
    • 测试的设置和拆卸功能,teardown 必须还原装饰器。
    • pytest 带有终结器的夹具
    • 带有yield 表达式的pytest 夹具。

    我个人喜欢@pytest.yield_fixture,因为它使代码保持简短,并且一旦您意识到夹具代码中yield 语句之后的所有内容都是清理代码,事情就很清楚了。

    【讨论】:

    • 你也可以举个例子吗?
    猜你喜欢
    • 2020-09-20
    • 1970-01-01
    • 2020-07-30
    • 1970-01-01
    • 2018-12-30
    • 2022-11-11
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多