Python中如何用mock对象代替函数进行单元测试

2024-04-19 05:40:57 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我正在为一个Fabric脚本编写一些单元测试。具体地说,我想用记录命令而不是执行的模拟版本替换fabric.api.run。但是,我希望这样做,这样就不必重写所有引用fabric的代码。在

我试过:

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

但因为我不能保证它会在其他模块导入之前运行织物.api,很多代码仍然使用real run函数。在


Tags: 对象函数run代码import命令版本脚本
2条回答

使用^{}

import fabric.api
import unittest
from unittest.mock import Mock, patch

class TestCases(unittest.TestCase):
    @patch('fabric.api.run')
    def test_test(self):
        self.assertTrue(True)

如果您的代码使用:

from fabric.api import run

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

^{pr2}$

如果您的代码使用:

^{3}$

您将能够修补原始副本:

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

this nice explanation。在

相关问题 更多 >