python - 使用 mock 和 pytest 在 python 中模拟装饰器

标签 python testing mocking decorator pytest

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

package.decorator = mytestdecorator

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

最佳答案

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

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

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

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

关于python - 使用 mock 和 pytest 在 python 中模拟装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36812830/

相关文章:

c# - 如何在 C# 中的方法内创建模拟实例?

Python 切割示例

python - 如何在多维数组中找到 k 个最小数字的索引?

JavaScript 单元测试 : how do you keep track of all the tests you have written and what code coverage you have?

testing - TestCafe 断言失败

java - 使用模拟构造函数参数模拟抽象类?

javascript - 开 Jest : Mocking navigator. 存储.坚持

python - 将数组传递给顺序神经网络模型

python - Postgres/SQLAlchemy/Alembic 将数据类型从 enum 更改为 int 并使用 map 值

python - 如何使用临时文件系统在 python 中模拟 os.walk?