使用模拟和补丁进行单元测试

Unit testing with mock and patch

我正在为一个函数 f 编写单元测试,它导入单元测试不(直接)与之交互的其他 functions/classes。有什么方法可以从单元测试中修补这些函数(可能在 set_up() 中)?

作为参考,我使用的是 Python 2.7.

从单元测试开始,我想modify/patch helper 的行为。

在单元测试文件中:

def test_some_function():
    assert(some_function() == True)

在some_function()定义中

import helper
def some_function():
    foo = helper.do_something()
    return foo & bar

模拟模块是相当标准的并且有文档记录 here。您将看到一个相当明确的示例,说明它是如何完成的。

此外,重要的是要了解 where to patch,了解如何在其他脚本中正确模拟模块。

为了向您提供更明确的示例并参考您的代码,您需要执行以下操作:

import unittest
from unittest.mock import patch

import module_you_are_testing

class MyTest(unittest.TestCase):

    @patch('module_you_are_testing.helper')
    def test_some_function(self, helper_mock):
        helper_mock.do_something.return_value = "something"
        # do more of your testing things here

所以,这里要记住的重要一点是,您在 所测试的地方引用了 helper。查看我提供的示例代码,您会看到我们正在导入 module_you_are_testing。所以,你嘲笑的是