gpt4 book ai didi

python - 如何在 Python 中用模拟对象替换函数进行单元测试

转载 作者:太空宇宙 更新时间:2023-11-03 18:09:58 27 4
gpt4 key购买 nike

如何在 Python 中用模拟对象替换对函数的所有引用?

我正在尝试为 Fabric 脚本编写一些单元测试。具体来说,我想将 Fabric.api.run 替换为记录命令而不是执行的模拟版本。但是,我想以某种方式执行此操作,这样我就不必重写所有引用结构的代码。

我尝试过这样做:

import fabric.api
_run = fabric.api.run
fabric.api.run = my_mock_run_function

但由于我不能保证它会在任何其他模块导入fabric.api之前运行,因此很多代码仍在使用真正的run函数。

最佳答案

如果您的代码使用:

from fabric.api import run

您必须修补模块对 run 函数的本地引用:

@patch('yourmodule.run')
def test_method(self, run):
pass

如果您的代码使用:

import fabric.api
...
api.run(...)

您将能够修补原始副本:

@patch('fabric.api.run')
def test_method(self, run):
pass

参见this nice explanation .

关于python - 如何在 Python 中用模拟对象替换函数进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26166568/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com